On Wed, 1 Jun 2022 14:55:57 GMT, Hannes Wallnöfer <hann...@openjdk.org> wrote:

>> The original purpose of this issue was to fix the problems of elements on 
>> the deprecated API list that can't be deselected because their release is 
>> not included in the list of checkboxes at the top of the page. This is fixed 
>> here by adding a checkbox for all elements/releases not included in the list 
>> if necessary. 
>> 
>> While working on it I discovered a few corner cases that produce undesirable 
>> output for the deprecated list. This includes the case of a single release 
>> (where a checkbox doesn't make any sense) and the case of some or all 
>> releases not having any occurrences in the `since` element of deprecated 
>> elements (in which case the checkbox is useless as well). A more detailed 
>> description of these cases is available in the [JBS 
>> issue](https://bugs.openjdk.java.net/browse/JDK-8287524).
>> 
>> As examples for the output generated with this change I uploaded JDK API 
>> docs:
>> 
>> http://cr.openjdk.java.net/~hannesw/8287524/api.00/deprecated-list.html
>> 
>> To illustrate behaviour in corner cases mentioned above I also uploaded 
>> deprecated pages generated by the `TestNewAPIListWriter` test (which despite 
>> its name also tests the "extended" deprecated list).
>> 
>> http://cr.openjdk.java.net/~hannesw/8287524/test.00/TestNewApiList/out-multi/deprecated-list.html
>> http://cr.openjdk.java.net/~hannesw/8287524/test.00/TestNewApiList/out-none/deprecated-list.html
>> http://cr.openjdk.java.net/~hannesw/8287524/test.00/TestNewApiList/out-package/deprecated-list.html
>> http://cr.openjdk.java.net/~hannesw/8287524/test.00/TestNewApiList/out-single/deprecated-list.html
>
> Hannes Wallnöfer has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   Add comment

Some questions inline.

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/DeprecatedListWriter.java
 line 88:

> 86:             for (int i = 0; i < releases.size(); i++) {
> 87:                 String release = releases.get(i);
> 88:                 String releaseIndex = release.isEmpty() ? "" : 
> Integer.toString(i + 1);

See following comments about the questionable? use of an empty string

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/DeprecatedListWriter.java
 line 92:

> 90:                         ? 
> contents.getContent("doclet.Deprecated_API_Checkbox_Other_Releases")
> 91:                         : Text.of(release);
> 92:                 HtmlId htmlId = HtmlId.of("release-" + releaseIndex);

Note that `releaseIndex` may be an empty string.

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/DeprecatedListWriter.java
 line 97:

> 95:                                         .put(HtmlAttr.CHECKED, "")
> 96:                                         .put(HtmlAttr.ONCLICK,
> 97:                                                 "toggleGlobal(this, '" + 
> releaseIndex + "', 3)"))

Note that `releaseIndex` may be an empty string

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SummaryListWriter.java
 line 136:

> 134:         bodyContents.addMainContent(content);
> 135:         // The script below enables checkboxes in the page and invokes 
> their click handler
> 136:         // to restore any previous state, which unfortunately doesn't 
> work on all browsers.

This comment looks worrying.
It might be worth identifying good or bad browsers, either here or in 
public-facing documentation.

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/DeprecatedAPIListBuilder.java
 line 63:

> 61:             if (!releases.containsAll(foundReleases)) {
> 62:                 // Empty string is added for other releases, including 
> the default value ""
> 63:                 releases.add("");

Is this instance of an empty string related to preceding uses of empty string, 
noted earlier in these review comments?

-------------

PR: https://git.openjdk.java.net/jdk/pull/8973

Reply via email to