RFR: 8214738 : javadoc should honor styles in doc-files
Jonathan Gibbons
jonathan.gibbons at oracle.com
Fri Dec 21 15:54:41 UTC 2018
I've not yet read the full webrev, but I do have one immediate question,
given below.
-- Jon
On 12/21/18 2:13 AM, Priya Lakshmi Muthuswamy wrote:
>
> Hi Jon,
>
> Thanks for the review.
>
> I have made the following changes:
> 1)Added style tag in HtmlTag.java, before we were using style
> attribute for comparison.
> 2)utils.getPreamble(element) ignores new lines after html tags, so I
> can included them while fetching the localHeadTags.
> 3)In Head.java, used addContent() itself instead of new methods.
> I had seen the addContent(), but it was adding the content before the
> scripts/styles tags.
> The doc-files script/style needed to added at the end of the other
> styles it that it overrides them.
>
This is a red flag. Why is it important that the user styles override
the javadoc styles? Given that we're adding javadoc styles for the
javadoc header/navbar, isn't it important that those should appear as
intended?
> When I checked the usage of addContent, i see that its been used only
> by IndexRedirectWriter to include script/noscript tags.
> I think that can be added at the end of existing tags as well.
>
> updated webrev: http://cr.openjdk.java.net/~pmuthuswamy/8214738/webrev.01/
> api: http://cr.openjdk.java.net/~pmuthuswamy/8214738/api/
>
> some of the doc-file with user specific styles.
> api/jdk.jdi/com/sun/jdi/doc-files/signature.html
> api/java.base/java/lang/doc-files/threadPrimitiveDeprecation.html
> api/java.desktop/java/awt/doc-files/Modality.html
>
> Thanks,
> Priya
>
> On 12/21/2018 3:16 AM, Jonathan Gibbons wrote:
>>
>> Priya,
>>
>> In DocFilesHandlerImpl, you have a boolean flag titleOrMetaTags.
>> Since <meta> elements never have content, and so never have end
>> elements, it seems misleading/incorrect to set the flag to true.
>> Also, you omit to handle ENTITY in the <title> element, so I added
>> that in as well. You could also write this code as a visitor if you
>> wanted, but the switch form is not too bad.
>>
>> I suggest the code should look something like this:
>>
>> 205 List<DocTree> localTags = new ArrayList<>(); 206 boolean inHead
>> = false;
>> 207 boolean inTitle = false; loop: 208 for (DocTree dt : dtrees) {
>> 209 switch (dt.getKind()) {
>> 210 case START_ELEMENT:
>> 211 StartElementTree startElem = (StartElementTree) dt; switch
>> (HtmlTag.get(startElem)) { case HEAD: inHead = true; break;case META:
>> break; case TITLE: inTitle=true; break; default: if (inHead) {
>> localTags.add(startElem); } }
>> 223 break; 224 case END_ELEMENT: 211 EndElementTree endElem = (EndElementTree)
>> dt; switch (HtmlTag.get(endElem)) { case HEAD: break loop; case TITLE:
>> inTitle = false;
>> break loop;default: if (inHead) { localTags.add(startElem); } }
>> 235 break; case ENTITY: 236 case TEXT:
>> 237 if (inHead && !inTitle) {
>> 238 localTags.add(dt);
>> 239 }
>> 240 break;
>> 241 }
>> -- Jon
>>
>> On 12/20/2018 11:31 AM, Jonathan Gibbons wrote:
>>>
>>>
>>>
>>> On 12/19/2018 08:38 PM, Priya Lakshmi Muthuswamy wrote:
>>>> Hi,
>>>>
>>>> Kindly review the fix for
>>>> https://bugs.openjdk.java.net/browse/JDK-8214738
>>>> webrev : http://cr.openjdk.java.net/~pmuthuswamy/8214738/webrev.00/
>>>>
>>>> Thanks,
>>>> Priya
>>>>
>>>>
>>>
>>> I don't think you need to add anything (userHeaderTags etc) to Head.
>>> Head already has the requisite feature, "extraContent" and "addContent"
>>> which can be used to add content into the <head> element.
>>>
>>> Re:
>>> Utils.toLowerCase(nodeEnd.getName().toString()).equals(HtmlTag.HEAD.getText())
>>> Don't use long-winded String comparison when you have type-safe
>>> comparison.
>>> In this case, you should be able to do something like
>>> HtmlTag.get(nodeEnd.getName()) == HtmlTag.HEAD
>>>
>>> getLocalHeaderTags needlessly walks through all the <body> element.
>>> You can
>>> break out of the loop once you hit </head>.
>>>
>>> DocFilesHandlerImpl:196.
>>> The "if" statement is a waste of time and effort. The code will work
>>> perfectly
>>> well when localTagsContent is an empty list, so you can simplify
>>> 196-199 to just 197.
>>>
>>> TestCopyFiles.java
>>> (style) re: indenting the continuation of multi-line strings
>>> The general Java style for breaking long expressions is to break
>>> before a binary operator, not after.
>>> The style in other javadoc tests is to not indent the continuation
>>> expressions, so that it is easier
>>> to see how the first line and subsequent lines are aligned.
>>>
>>> -- Jon
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/javadoc-dev/attachments/20181221/424f7db3/attachment-0001.html>
More information about the javadoc-dev
mailing list