# HG changeset patch # User hannesw # Date 1574856496 -3600 # Node ID 48b88b9c11eb7121e79edcd05925addbe1c3a31c # Parent 5af9fa90cd7be0236fac2ed9f77c94d495d3bc74 8223378: CSS solution for navbar problem with elements is not ideal Reviewed-by: jjg diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractIndexWriter.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractIndexWriter.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractIndexWriter.java Wed Nov 27 13:08:16 2019 +0100 @@ -92,7 +92,7 @@ IndexBuilder indexbuilder) { super(configuration, path); this.indexbuilder = indexbuilder; - this.navBar = new Navigation(null, configuration, fixedNavDiv, PageMode.INDEX, path); + this.navBar = new Navigation(null, configuration, PageMode.INDEX, path); } /** @@ -419,7 +419,7 @@ * @return a content tree for the marker anchor */ public Content getMarkerAnchorForIndex(String anchorNameForIndex) { - return links.createAnchor(getNameForIndex(anchorNameForIndex), null); + return links.createAnchor(getNameForIndex(anchorNameForIndex)); } /** diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractOverviewIndexWriter.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractOverviewIndexWriter.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractOverviewIndexWriter.java Wed Nov 27 13:08:16 2019 +0100 @@ -25,6 +25,8 @@ package jdk.javadoc.internal.doclets.formats.html; +import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; +import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; @@ -57,12 +59,12 @@ public AbstractOverviewIndexWriter(HtmlConfiguration configuration, DocPath filename) { super(configuration, filename); - this.navBar = new Navigation(null, configuration, fixedNavDiv, PageMode.OVERVIEW, path); + this.navBar = new Navigation(null, configuration, PageMode.OVERVIEW, path); } /** * Adds the top text (from the -top option), the upper - * navigation bar, and then the title (from the"-title" + * navigation bar, and then the title (from the"-header" * option), at the top of page. * * @param header the documentation tree to which the navigation bar header will be added @@ -126,16 +128,18 @@ throws DocFileIOException { String windowOverview = resources.getText(title); Content body = getBody(getWindowTitle(windowOverview)); - Content header = HtmlTree.HEADER(); + Content header = new ContentBuilder(); addNavigationBarHeader(header); - Content main = HtmlTree.MAIN(); + Content main = new ContentBuilder(); addOverviewHeader(main); addIndex(main); Content footer = HtmlTree.FOOTER(); addNavigationBarFooter(footer); - body.add(header); - body.add(main); - body.add(footer); + body.add(new BodyContents() + .setHeader(header) + .addMainContent(main) + .setFooter(footer) + .toContent()); printHtmlDocument( configuration.metakeywords.getOverviewMetaKeywords(title, configuration.doctitle), description, body); diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AllClassesIndexWriter.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AllClassesIndexWriter.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AllClassesIndexWriter.java Wed Nov 27 13:08:16 2019 +0100 @@ -31,6 +31,7 @@ import javax.lang.model.element.TypeElement; import com.sun.source.doctree.DocTree; +import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag; @@ -56,13 +57,6 @@ protected IndexBuilder indexbuilder; /** - * The HTML tree for main tag. - */ - protected HtmlTree mainTree = HtmlTree.MAIN(); - - private final Navigation navBar; - - /** * Construct AllClassesIndexWriter object. Also initializes the indexbuilder variable in this * class. * @@ -74,7 +68,6 @@ DocPath filename, IndexBuilder indexbuilder) { super(configuration, filename); this.indexbuilder = indexbuilder; - this.navBar = new Navigation(null, configuration, fixedNavDiv, PageMode.ALLCLASSES, path); } /** @@ -101,21 +94,25 @@ */ protected void buildAllClassesFile() throws DocFileIOException { String label = resources.getText("doclet.All_Classes"); - HtmlTree bodyTree = getBody(getWindowTitle(label)); - HtmlTree header = HtmlTree.HEADER(); + Content header = new ContentBuilder(); addTop(header); + Navigation navBar = new Navigation(null, configuration, PageMode.ALLCLASSES, path); navBar.setUserHeader(getUserHeaderFooter(true)); header.add(navBar.getContent(true)); - bodyTree.add(header); Content allClassesContent = new ContentBuilder(); addContents(allClassesContent); - mainTree.add(allClassesContent); - bodyTree.add(mainTree); + Content mainContent = new ContentBuilder(); + mainContent.add(allClassesContent); Content footer = HtmlTree.FOOTER(); navBar.setUserFooter(getUserHeaderFooter(false)); footer.add(navBar.getContent(false)); addBottom(footer); - bodyTree.add(footer); + HtmlTree bodyTree = getBody(getWindowTitle(label)); + bodyTree.add(new BodyContents() + .setHeader(header) + .addMainContent(mainContent) + .setFooter(footer) + .toContent()); printHtmlDocument(null, "class index", bodyTree); } diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AllPackagesIndexWriter.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AllPackagesIndexWriter.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AllPackagesIndexWriter.java Wed Nov 27 13:08:16 2019 +0100 @@ -26,6 +26,7 @@ import javax.lang.model.element.PackageElement; +import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag; @@ -46,13 +47,6 @@ public class AllPackagesIndexWriter extends HtmlDocletWriter { /** - * The HTML tree for main tag. - */ - protected HtmlTree mainTree = HtmlTree.MAIN(); - - private final Navigation navBar; - - /** * Construct AllPackagesIndexWriter object. * * @param configuration The current configuration @@ -60,7 +54,6 @@ */ public AllPackagesIndexWriter(HtmlConfiguration configuration, DocPath filename) { super(configuration, filename); - this.navBar = new Navigation(null, configuration, fixedNavDiv, PageMode.ALLPACKAGES, path); } /** @@ -83,12 +76,11 @@ */ protected void buildAllPackagesFile() throws DocFileIOException { String label = resources.getText("doclet.All_Packages"); - HtmlTree bodyTree = getBody(getWindowTitle(label)); - HtmlTree header = HtmlTree.HEADER(); - addTop(header); + Content headerContent = new ContentBuilder(); + Navigation navBar = new Navigation(null, configuration, PageMode.ALLPACKAGES, path); + addTop(headerContent); navBar.setUserHeader(getUserHeaderFooter(true)); - header.add(navBar.getContent(true)); - bodyTree.add(header); + headerContent.add(navBar.getContent(true)); HtmlTree div = new HtmlTree(HtmlTag.DIV); div.setStyle(HtmlStyle.allPackagesContainer); addPackages(div); @@ -96,14 +88,17 @@ Content pHeading = HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING, true, HtmlStyle.title, titleContent); Content headerDiv = HtmlTree.DIV(HtmlStyle.header, pHeading); - mainTree.add(headerDiv); - mainTree.add(div); - bodyTree.add(mainTree); Content footer = HtmlTree.FOOTER(); navBar.setUserFooter(getUserHeaderFooter(false)); footer.add(navBar.getContent(false)); addBottom(footer); - bodyTree.add(footer); + HtmlTree bodyTree = getBody(getWindowTitle(label)); + bodyTree.add(new BodyContents() + .setHeader(headerContent) + .addMainContent(headerDiv) + .addMainContent(div) + .setFooter(footer) + .toContent()); printHtmlDocument(null, "package index", bodyTree); } diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeWriterImpl.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeWriterImpl.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeWriterImpl.java Wed Nov 27 13:08:16 2019 +0100 @@ -32,6 +32,7 @@ import javax.lang.model.element.TypeElement; import com.sun.source.doctree.DocTree; +import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; import jdk.javadoc.internal.doclets.formats.html.markup.Entity; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag; @@ -78,7 +79,7 @@ super(configuration, configuration.docPaths.forClass(annotationType)); this.annotationType = annotationType; configuration.currentTypeElement = annotationType; - this.navBar = new Navigation(annotationType, configuration, fixedNavDiv, PageMode.CLASS, path); + this.navBar = new Navigation(annotationType, configuration, PageMode.CLASS, path); } /** @@ -86,17 +87,15 @@ */ @Override public Content getHeader(String header) { - HtmlTree bodyTree = getBody(getWindowTitle(utils.getSimpleName(annotationType))); - HtmlTree htmlTree = HtmlTree.HEADER(); - addTop(htmlTree); + Content headerContent = new ContentBuilder(); + addTop(headerContent); Content linkContent = getModuleLink(utils.elementUtils.getModuleOf(annotationType), contents.moduleLabel); navBar.setNavLinkModule(linkContent); navBar.setMemberSummaryBuilder(configuration.getBuilderFactory().getMemberSummaryBuilder(this)); navBar.setUserHeader(getUserHeaderFooter(true)); - htmlTree.add(navBar.getContent(true)); - bodyTree.add(htmlTree); - bodyTree.add(MarkerComments.START_OF_CLASS_DATA); + headerContent.add(navBar.getContent(true)); + HtmlTree div = new HtmlTree(HtmlTag.DIV); div.setStyle(HtmlStyle.header); if (configuration.showModules) { @@ -118,13 +117,14 @@ } LinkInfoImpl linkInfo = new LinkInfoImpl(configuration, LinkInfoImpl.Kind.CLASS_HEADER, annotationType); - Content headerContent = new StringContent(header); Content heading = HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING, true, - HtmlStyle.title, headerContent); + HtmlStyle.title, new StringContent(header)); heading.add(getTypeParameterLinks(linkInfo)); div.add(heading); - mainTree.add(div); - return bodyTree; + bodyContents.setHeader(headerContent) + .addMainContent(MarkerComments.START_OF_CLASS_DATA) + .addMainContent(div); + return getBody(getWindowTitle(utils.getSimpleName(annotationType))); } /** @@ -139,13 +139,13 @@ * {@inheritDoc} */ @Override - public void addFooter(Content contentTree) { - contentTree.add(MarkerComments.END_OF_CLASS_DATA); + public void addFooter() { Content htmlTree = HtmlTree.FOOTER(); navBar.setUserFooter(getUserHeaderFooter(false)); htmlTree.add(navBar.getContent(false)); addBottom(htmlTree); - contentTree.add(htmlTree); + bodyContents.addMainContent(MarkerComments.END_OF_CLASS_DATA) + .setFooter(htmlTree); } /** @@ -156,6 +156,7 @@ String description = getDescription("declaration", annotationType); PackageElement pkg = utils.containingPackage(this.annotationType); List localStylesheets = getLocalStylesheets(pkg); + contentTree.add(bodyContents.toContent()); printHtmlDocument(configuration.metakeywords.getMetaKeywords(annotationType), description, localStylesheets, contentTree); } diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassUseWriter.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassUseWriter.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassUseWriter.java Wed Nov 27 13:08:16 2019 +0100 @@ -100,11 +100,6 @@ private final Navigation navBar; /** - * The HTML tree for main tag. - */ - protected HtmlTree mainTree = HtmlTree.MAIN(); - - /** * Constructor. * * @param filename the file to be generated. @@ -154,7 +149,7 @@ constrSubWriter = new ConstructorWriterImpl(this); fieldSubWriter = new FieldWriterImpl(this); classSubWriter = new NestedClassWriterImpl(this); - this.navBar = new Navigation(typeElement, configuration, fixedNavDiv, PageMode.USE, path); + this.navBar = new Navigation(typeElement, configuration, PageMode.USE, path); } /** @@ -232,13 +227,13 @@ div.add(contents.getContent("doclet.ClassUse_No.usage.of.0", utils.getFullyQualifiedName(typeElement))); } - mainTree.add(div); - body.add(mainTree); + bodyContents.addMainContent(div); HtmlTree footer = HtmlTree.FOOTER(); navBar.setUserFooter(getUserHeaderFooter(false)); footer.add(navBar.getContent(false)); addBottom(footer); - body.add(footer); + bodyContents.setFooter(footer); + body.add(bodyContents.toContent()); String description = getDescription("use", typeElement); printHtmlDocument(null, description, body); } @@ -432,8 +427,8 @@ String title = resources.getText("doclet.Window_ClassUse_Header", cltype, clname); HtmlTree bodyTree = getBody(getWindowTitle(title)); - HtmlTree htmlTree = HtmlTree.HEADER(); - addTop(htmlTree); + Content headerContent = new ContentBuilder(); + addTop(headerContent); Content mdleLinkContent = getModuleLink(utils.elementUtils.getModuleOf(typeElement), contents.moduleLabel); navBar.setNavLinkModule(mdleLinkContent); @@ -442,16 +437,15 @@ .label(resources.getText("doclet.Class"))); navBar.setNavLinkClass(classLinkContent); navBar.setUserHeader(getUserHeaderFooter(true)); - htmlTree.add(navBar.getContent(true)); - bodyTree.add(htmlTree); - ContentBuilder headContent = new ContentBuilder(); - headContent.add(contents.getContent("doclet.ClassUse_Title", cltype)); - headContent.add(new HtmlTree(HtmlTag.BR)); - headContent.add(clname); + headerContent.add(navBar.getContent(true)); + ContentBuilder headingContent = new ContentBuilder(); + headingContent.add(contents.getContent("doclet.ClassUse_Title", cltype)); + headingContent.add(new HtmlTree(HtmlTag.BR)); + headingContent.add(clname); Content heading = HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING, - true, HtmlStyle.title, headContent); + true, HtmlStyle.title, headingContent); Content div = HtmlTree.DIV(HtmlStyle.header, heading); - mainTree.add(div); + bodyContents.setHeader(headerContent).addMainContent(div); return bodyTree; } } diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassWriterImpl.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassWriterImpl.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassWriterImpl.java Wed Nov 27 13:08:16 2019 +0100 @@ -105,7 +105,7 @@ this.typeElement = typeElement; configuration.currentTypeElement = typeElement; this.classtree = classTree; - this.navBar = new Navigation(typeElement, configuration, fixedNavDiv, PageMode.CLASS, path); + this.navBar = new Navigation(typeElement, configuration, PageMode.CLASS, path); } /** @@ -114,16 +114,14 @@ @Override public Content getHeader(String header) { HtmlTree bodyTree = getBody(getWindowTitle(utils.getSimpleName(typeElement))); - HtmlTree htmlTree = HtmlTree.HEADER(); - addTop(htmlTree); + Content headerContent = new ContentBuilder(); + addTop(headerContent); Content linkContent = getModuleLink(utils.elementUtils.getModuleOf(typeElement), contents.moduleLabel); navBar.setNavLinkModule(linkContent); navBar.setMemberSummaryBuilder(configuration.getBuilderFactory().getMemberSummaryBuilder(this)); navBar.setUserHeader(getUserHeaderFooter(true)); - htmlTree.add(navBar.getContent(true)); - bodyTree.add(htmlTree); - bodyTree.add(MarkerComments.START_OF_CLASS_DATA); + headerContent.add(navBar.getContent(true)); HtmlTree div = new HtmlTree(HtmlTag.DIV); div.setStyle(HtmlStyle.header); if (configuration.showModules) { @@ -149,12 +147,13 @@ LinkInfoImpl.Kind.CLASS_HEADER, typeElement); //Let's not link to ourselves in the header. linkInfo.linkToSelf = false; - Content headerContent = new StringContent(header); Content heading = HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING, true, - HtmlStyle.title, headerContent); + HtmlStyle.title, new StringContent(header)); heading.add(getTypeParameterLinks(linkInfo)); div.add(heading); - mainTree.add(div); + bodyContents.setHeader(headerContent) + .addMainContent(MarkerComments.START_OF_CLASS_DATA) + .addMainContent(div); return bodyTree; } @@ -170,13 +169,13 @@ * {@inheritDoc} */ @Override - public void addFooter(Content contentTree) { - contentTree.add(MarkerComments.END_OF_CLASS_DATA); + public void addFooter() { + bodyContents.addMainContent(MarkerComments.END_OF_CLASS_DATA); Content htmlTree = HtmlTree.FOOTER(); navBar.setUserFooter(getUserHeaderFooter(false)); htmlTree.add(navBar.getContent(false)); addBottom(htmlTree); - contentTree.add(htmlTree); + bodyContents.setFooter(htmlTree); } /** @@ -187,6 +186,7 @@ String description = getDescription("declaration", typeElement); PackageElement pkg = utils.containingPackage(typeElement); List localStylesheets = getLocalStylesheets(pkg); + contentTree.add(bodyContents.toContent()); printHtmlDocument(configuration.metakeywords.getMetaKeywords(typeElement), description, localStylesheets, contentTree); } diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstantsSummaryWriterImpl.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstantsSummaryWriterImpl.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstantsSummaryWriterImpl.java Wed Nov 27 13:08:16 2019 +0100 @@ -33,6 +33,7 @@ import javax.lang.model.element.TypeElement; import javax.lang.model.element.VariableElement; +import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; import jdk.javadoc.internal.doclets.formats.html.markup.Entity; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; @@ -76,17 +77,14 @@ private final TableHeader constantsTableHeader; /** - * The HTML tree for main tag. - */ - private final HtmlTree mainTree = HtmlTree.MAIN(); - - /** * The HTML tree for constant values summary. */ private HtmlTree summaryTree; private final Navigation navBar; + private final BodyContents bodyContents = new BodyContents(); + /** * Construct a ConstantsSummaryWriter. * @param configuration the configuration used in this run @@ -97,7 +95,7 @@ this.configuration = configuration; constantsTableHeader = new TableHeader( contents.modifierAndTypeLabel, contents.constantFieldLabel, contents.valueLabel); - this.navBar = new Navigation(null, configuration, fixedNavDiv, PageMode.CONSTANTVALUES, path); + this.navBar = new Navigation(null, configuration, PageMode.CONSTANTVALUES, path); } /** @@ -107,11 +105,11 @@ public Content getHeader() { String label = resources.getText("doclet.Constants_Summary"); HtmlTree bodyTree = getBody(getWindowTitle(label)); - HtmlTree htmlTree = HtmlTree.HEADER(); - addTop(htmlTree); + Content headerContent = new ContentBuilder(); + addTop(headerContent); navBar.setUserHeader(getUserHeaderFooter(true)); - htmlTree.add(navBar.getContent(true)); - bodyTree.add(htmlTree); + headerContent.add(navBar.getContent(true)); + bodyContents.setHeader(headerContent); return bodyTree; } @@ -150,7 +148,7 @@ * {@inheritDoc} */ @Override - public void addContentsList(Content contentTree, Content contentListTree) { + public void addContentsList(Content contentListTree) { Content titleContent = contents.constantsSummaryTitle; Content pHeading = HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING, true, HtmlStyle.title, titleContent); @@ -161,7 +159,7 @@ HtmlTree section = HtmlTree.SECTION(HtmlStyle.packages, heading); section.add(contentListTree); div.add(section); - mainTree.add(div); + bodyContents.addMainContent(div); } /** @@ -303,24 +301,23 @@ * {@inheritDoc} */ @Override - public void addConstantSummaries(Content contentTree, Content summariesTree) { + public void addConstantSummaries(Content summariesTree) { if (summaryTree != null) { summariesTree.add(summaryTree); } - mainTree.add(summariesTree); - contentTree.add(mainTree); + bodyContents.addMainContent(summariesTree); } /** * {@inheritDoc} */ @Override - public void addFooter(Content contentTree) { + public void addFooter() { Content htmlTree = HtmlTree.FOOTER(); navBar.setUserFooter(getUserHeaderFooter(false)); htmlTree.add(navBar.getContent(false)); addBottom(htmlTree); - contentTree.add(htmlTree); + bodyContents.setFooter(htmlTree); } /** @@ -328,6 +325,7 @@ */ @Override public void printDocument(Content contentTree) throws DocFileIOException { + contentTree.add(bodyContents.toContent()); printHtmlDocument(null, "summary of constants", contentTree); } } diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/DeprecatedListWriter.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/DeprecatedListWriter.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/DeprecatedListWriter.java Wed Nov 27 13:08:16 2019 +0100 @@ -222,7 +222,7 @@ public DeprecatedListWriter(HtmlConfiguration configuration, DocPath filename) { super(configuration, filename); this.configuration = configuration; - this.navBar = new Navigation(null, configuration, fixedNavDiv, PageMode.DEPRECATED, path); + this.navBar = new Navigation(null, configuration, PageMode.DEPRECATED, path); NestedClassWriterImpl classW = new NestedClassWriterImpl(this); writerMap = new EnumMap<>(DeprElementKind.class); for (DeprElementKind kind : DeprElementKind.values()) { @@ -283,8 +283,7 @@ protected void generateDeprecatedListFile(DeprecatedAPIListBuilder deprapi) throws DocFileIOException { HtmlTree body = getHeader(); - HtmlTree htmlTree = HtmlTree.MAIN(); - htmlTree.add(getContentsList(deprapi)); + bodyContents.addMainContent(getContentsList(deprapi)); String memberTableSummary; HtmlTree div = new HtmlTree(HtmlTag.DIV); div.setStyle(HtmlStyle.contentContainer); @@ -300,14 +299,14 @@ getHeadingKey(kind), memberTableSummary, memberTableHeader, div); } } - htmlTree.add(div); - body.add(htmlTree); - htmlTree = HtmlTree.FOOTER(); + bodyContents.addMainContent(div); + HtmlTree htmlTree = HtmlTree.FOOTER(); navBar.setUserFooter(getUserHeaderFooter(false)); htmlTree.add(navBar.getContent(false)); addBottom(htmlTree); - body.add(htmlTree); + bodyContents.setFooter(htmlTree); String description = "deprecated elements"; + body.add(bodyContents.toContent()); printHtmlDocument(null, description, body); } @@ -315,7 +314,7 @@ * Add the index link. * * @param builder the deprecated list builder - * @param type the type of list being documented + * @param kind the kind of list being documented * @param contentTree the content tree to which the index link will be added */ private void addIndexLink(DeprecatedAPIListBuilder builder, @@ -353,7 +352,7 @@ * Add the anchor. * * @param builder the deprecated list builder - * @param type the type of list being documented + * @param kind the kind of list being documented * @param htmlTree the content tree to which the anchor will be added */ private void addAnchor(DeprecatedAPIListBuilder builder, DeprElementKind kind, Content htmlTree) { @@ -370,11 +369,11 @@ public HtmlTree getHeader() { String title = resources.getText("doclet.Window_Deprecated_List"); HtmlTree bodyTree = getBody(getWindowTitle(title)); - HtmlTree htmlTree = HtmlTree.HEADER(); - addTop(htmlTree); + Content headerContent = new ContentBuilder(); + addTop(headerContent); navBar.setUserHeader(getUserHeaderFooter(true)); - htmlTree.add(navBar.getContent(true)); - bodyTree.add(htmlTree); + headerContent.add(navBar.getContent(true)); + bodyContents.setHeader(headerContent); return bodyTree; } diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/DocFilesHandlerImpl.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/DocFilesHandlerImpl.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/DocFilesHandlerImpl.java Wed Nov 27 13:08:16 2019 +0100 @@ -31,6 +31,9 @@ import com.sun.source.doctree.TextTree; import com.sun.source.util.DocTreeFactory; import com.sun.tools.doclint.HtmlTag; +import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; +import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; import jdk.javadoc.internal.doclets.formats.html.markup.Navigation; import jdk.javadoc.internal.doclets.toolkit.Content; @@ -180,32 +183,31 @@ String title = getWindowTitle(docletWriter, dfElement).trim(); HtmlTree htmlContent = docletWriter.getBody(title); - docletWriter.addTop(htmlContent); PackageElement pkg = dfElement.getPackageElement(); - this.navBar = new Navigation(element, configuration, docletWriter.fixedNavDiv, - PageMode.DOCFILE, docletWriter.path); + this.navBar = new Navigation(element, configuration, PageMode.DOCFILE, docletWriter.path); + Content headerContent = new ContentBuilder(); + docletWriter.addTop(headerContent); Content mdleLinkContent = docletWriter.getModuleLink(utils.elementUtils.getModuleOf(pkg), docletWriter.contents.moduleLabel); navBar.setNavLinkModule(mdleLinkContent); Content pkgLinkContent = docletWriter.getPackageLink(pkg, docletWriter.contents.packageLabel); navBar.setNavLinkPackage(pkgLinkContent); navBar.setUserHeader(docletWriter.getUserHeaderFooter(true)); - Content header = HtmlTree.HEADER(); - header.add(navBar.getContent(true)); - htmlContent.add(header); + headerContent.add(navBar.getContent(true)); List fullBody = utils.getFullBody(dfElement); - Content bodyContent = docletWriter.commentTagsToContent(null, dfElement, fullBody, false); - docletWriter.addTagsInfo(dfElement, bodyContent); - Content main = HtmlTree.MAIN(); - main.add(bodyContent); - htmlContent.add(main); + Content pageContent = docletWriter.commentTagsToContent(null, dfElement, fullBody, false); + docletWriter.addTagsInfo(dfElement, pageContent); navBar.setUserFooter(docletWriter.getUserHeaderFooter(false)); Content footer = HtmlTree.FOOTER(); footer.add(navBar.getContent(false)); docletWriter.addBottom(footer); - htmlContent.add(footer); + htmlContent.add(new BodyContents() + .setHeader(headerContent) + .addMainContent(HtmlTree.DIV(HtmlStyle.contentContainer, pageContent)) + .setFooter(footer) + .toContent()); docletWriter.printHtmlDocument(Collections.emptyList(), null, localTagsContent, Collections.emptyList(), htmlContent); } diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HelpWriter.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HelpWriter.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HelpWriter.java Wed Nov 27 13:08:16 2019 +0100 @@ -25,6 +25,8 @@ package jdk.javadoc.internal.doclets.formats.html; +import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; +import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; @@ -50,8 +52,6 @@ */ public class HelpWriter extends HtmlDocletWriter { - HtmlTree mainTree = HtmlTree.MAIN(); - private final Navigation navBar; /** @@ -62,7 +62,7 @@ public HelpWriter(HtmlConfiguration configuration, DocPath filename) { super(configuration, filename); - this.navBar = new Navigation(null, configuration, fixedNavDiv, PageMode.HELP, path); + this.navBar = new Navigation(null, configuration, PageMode.HELP, path); } /** @@ -88,17 +88,21 @@ protected void generateHelpFile() throws DocFileIOException { String title = resources.getText("doclet.Window_Help_title"); HtmlTree body = getBody(getWindowTitle(title)); - HtmlTree htmlTree = HtmlTree.HEADER(); - addTop(htmlTree); + Content headerContent = new ContentBuilder(); + addTop(headerContent); navBar.setUserHeader(getUserHeaderFooter(true)); - htmlTree.add(navBar.getContent(true)); - body.add(htmlTree); - addHelpFileContents(body); - htmlTree = HtmlTree.FOOTER(); + headerContent.add(navBar.getContent(true)); + ContentBuilder helpFileContent = new ContentBuilder(); + addHelpFileContents(helpFileContent); + HtmlTree footer = HtmlTree.FOOTER(); navBar.setUserFooter(getUserHeaderFooter(false)); - htmlTree.add(navBar.getContent(false)); - addBottom(htmlTree); - body.add(htmlTree); + footer.add(navBar.getContent(false)); + addBottom(footer); + body.add(new BodyContents() + .setHeader(headerContent) + .addMainContent(helpFileContent) + .setFooter(footer) + .toContent()); printHtmlDocument(null, "help", body); } @@ -118,7 +122,7 @@ Content intro = HtmlTree.DIV(HtmlStyle.subTitle, contents.getContent("doclet.help.intro")); div.add(intro); - mainTree.add(div); + contentTree.add(div); HtmlTree htmlTree; HtmlTree ul = new HtmlTree(HtmlTag.UL); ul.setStyle(HtmlStyle.blockList); @@ -332,7 +336,6 @@ Content footnote = HtmlTree.SPAN(HtmlStyle.emphasizedPhrase, contents.getContent("doclet.help.footnote")); divContent.add(footnote); - mainTree.add(divContent); - contentTree.add(mainTree); + contentTree.add(divContent); } } diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java Wed Nov 27 13:08:16 2019 +0100 @@ -188,8 +188,6 @@ */ private boolean isContainerDocumented = false; - HtmlTree fixedNavDiv = new HtmlTree(HtmlTag.DIV); - /** * The window title of this file. */ @@ -509,7 +507,7 @@ */ public void addTop(Content htmlTree) { Content top = new RawHtml(replaceDocRootDir(configuration.top)); - fixedNavDiv.add(top); + htmlTree.add(top); } /** @@ -2112,29 +2110,6 @@ } /** - * Returns an HtmlTree for the SCRIPT tag. - * - * @return an HtmlTree for the SCRIPT tag - */ - protected Script getWinTitleScript() { - Script script = new Script(); - if (winTitle != null && winTitle.length() > 0) { - script.append("\n"); - } - return script; - } - - /** * Returns an HtmlTree for the BODY tag. * * @param title title for the window diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleWriterImpl.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleWriterImpl.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleWriterImpl.java Wed Nov 27 13:08:16 2019 +0100 @@ -42,6 +42,7 @@ import com.sun.source.doctree.DocTree; import jdk.javadoc.doclet.DocletEnvironment.ModuleMode; +import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; import jdk.javadoc.internal.doclets.formats.html.markup.Entity; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; @@ -161,12 +162,9 @@ private final Map providesTrees = new TreeMap<>(utils.makeAllClassesComparator()); - /** - * The HTML tree for main tag. - */ - protected HtmlTree mainTree = HtmlTree.MAIN(); + private final Navigation navBar; - private final Navigation navBar; + private final BodyContents bodyContents = new BodyContents(); /** * Constructor to construct ModuleWriter object and to generate "moduleName-summary.html" file. @@ -178,7 +176,7 @@ super(configuration, configuration.docPaths.moduleSummary(mdle)); this.mdle = mdle; this.moduleMode = configuration.docEnv.getModuleMode(); - this.navBar = new Navigation(mdle, configuration, fixedNavDiv, PageMode.MODULE, path); + this.navBar = new Navigation(mdle, configuration, PageMode.MODULE, path); computeModulesData(); } @@ -190,16 +188,15 @@ @Override public Content getModuleHeader(String heading) { HtmlTree bodyTree = getBody(getWindowTitle(mdle.getQualifiedName().toString())); - HtmlTree htmlTree = HtmlTree.HEADER(); - addTop(htmlTree); + Content headerContent = new ContentBuilder(); + addTop(headerContent); navBar.setDisplaySummaryModuleDescLink(!utils.getFullBody(mdle).isEmpty() && !configuration.nocomment); navBar.setDisplaySummaryModulesLink(display(requires) || display(indirectModules)); navBar.setDisplaySummaryPackagesLink(display(packages) || display(indirectPackages) || display(indirectOpenPackages)); navBar.setDisplaySummaryServicesLink(displayServices(uses, usesTrees) || displayServices(provides.keySet(), providesTrees)); navBar.setUserHeader(getUserHeaderFooter(true)); - htmlTree.add(navBar.getContent(true)); - bodyTree.add(htmlTree); + headerContent.add(navBar.getContent(true)); HtmlTree div = new HtmlTree(HtmlTag.DIV); div.setStyle(HtmlStyle.header); Content annotationContent = new HtmlTree(HtmlTag.P); @@ -213,7 +210,8 @@ Content moduleHead = new RawHtml(heading); tHeading.add(moduleHead); div.add(tHeading); - mainTree.add(div); + bodyContents.setHeader(headerContent) + .addMainContent(div); return bodyTree; } @@ -877,21 +875,20 @@ * {@inheritDoc} */ @Override - public void addModuleContent(Content contentTree, Content moduleContentTree) { - mainTree.add(moduleContentTree); - contentTree.add(mainTree); + public void addModuleContent(Content moduleContentTree) { + bodyContents.addMainContent(moduleContentTree); } /** * {@inheritDoc} */ @Override - public void addModuleFooter(Content contentTree) { + public void addModuleFooter() { Content htmlTree = HtmlTree.FOOTER(); navBar.setUserFooter(getUserHeaderFooter(false)); htmlTree.add(navBar.getContent(false)); addBottom(htmlTree); - contentTree.add(htmlTree); + bodyContents.setFooter(htmlTree); } /** @@ -901,6 +898,7 @@ */ @Override public void printDocument(Content contentTree) throws DocFileIOException { + contentTree.add(bodyContents.toContent()); printHtmlDocument(configuration.metakeywords.getMetaKeywordsForModule(mdle), getDescription("declaration", mdle), getLocalStylesheets(mdle), contentTree); } diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageTreeWriter.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageTreeWriter.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageTreeWriter.java Wed Nov 27 13:08:16 2019 +0100 @@ -27,6 +27,8 @@ import javax.lang.model.element.PackageElement; +import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; +import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; @@ -60,6 +62,8 @@ private final Navigation navBar; + private final BodyContents bodyContents = new BodyContents(); + /** * Constructor. * @param configuration the configuration @@ -70,7 +74,7 @@ super(configuration, path, new ClassTree(configuration.typeElementCatalog.allClasses(packageElement), configuration)); this.packageElement = packageElement; - this.navBar = new Navigation(packageElement, configuration, fixedNavDiv, PageMode.TREE, path); + this.navBar = new Navigation(packageElement, configuration, PageMode.TREE, path); } /** @@ -97,7 +101,7 @@ */ protected void generatePackageTreeFile() throws DocFileIOException { HtmlTree body = getPackageTreeHeader(); - HtmlTree mainTree = HtmlTree.MAIN(); + Content mainContent = new ContentBuilder(); Content headContent = contents.getContent("doclet.Hierarchy_For_Package", utils.getPackageName(packageElement)); Content heading = HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING, false, @@ -106,20 +110,21 @@ if (configuration.packages.size() > 1) { addLinkToMainTree(div); } - mainTree.add(div); + mainContent.add(div); HtmlTree divTree = new HtmlTree(HtmlTag.DIV); divTree.setStyle(HtmlStyle.contentContainer); addTree(classtree.baseClasses(), "doclet.Class_Hierarchy", divTree); addTree(classtree.baseInterfaces(), "doclet.Interface_Hierarchy", divTree); addTree(classtree.baseAnnotationTypes(), "doclet.Annotation_Type_Hierarchy", divTree); addTree(classtree.baseEnums(), "doclet.Enum_Hierarchy", divTree, true); - mainTree.add(divTree); - body.add(mainTree); + mainContent.add(divTree); + bodyContents.addMainContent(mainContent); HtmlTree footer = HtmlTree.FOOTER(); navBar.setUserFooter(getUserHeaderFooter(false)); footer.add(navBar.getContent(false)); addBottom(footer); - body.add(footer); + bodyContents.setFooter(footer); + body.add(bodyContents.toContent()); printHtmlDocument(null, getDescription("tree", packageElement), body); } @@ -132,14 +137,14 @@ String packageName = packageElement.isUnnamed() ? "" : utils.getPackageName(packageElement); String title = packageName + " " + resources.getText("doclet.Window_Class_Hierarchy"); HtmlTree bodyTree = getBody(getWindowTitle(title)); - HtmlTree htmlTree = HtmlTree.HEADER(); - addTop(htmlTree); + Content headerContent = new ContentBuilder(); + addTop(headerContent); Content linkContent = getModuleLink(utils.elementUtils.getModuleOf(packageElement), contents.moduleLabel); navBar.setNavLinkModule(linkContent); navBar.setUserHeader(getUserHeaderFooter(true)); - htmlTree.add(navBar.getContent(true)); - bodyTree.add(htmlTree); + headerContent.add(navBar.getContent(true)); + bodyContents.setHeader(headerContent); return bodyTree; } diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageUseWriter.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageUseWriter.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageUseWriter.java Wed Nov 27 13:08:16 2019 +0100 @@ -64,7 +64,6 @@ final PackageElement packageElement; final SortedMap> usingPackageToUsedClasses = new TreeMap<>(); - protected HtmlTree mainTree = HtmlTree.MAIN(); final String packageUseTableSummary; private final Navigation navBar; @@ -104,7 +103,7 @@ packageUseTableSummary = resources.getText("doclet.Use_Table_Summary", resources.getText("doclet.packages")); - this.navBar = new Navigation(packageElement, configuration, fixedNavDiv, PageMode.USE, path); + this.navBar = new Navigation(packageElement, configuration, PageMode.USE, path); } /** @@ -136,13 +135,13 @@ } else { addPackageUse(div); } - mainTree.add(div); - body.add(mainTree); + bodyContents.addMainContent(div); HtmlTree footer = HtmlTree.FOOTER(); navBar.setUserFooter(getUserHeaderFooter(false)); footer.add(navBar.getContent(false)); addBottom(footer); - body.add(footer); + bodyContents.setFooter(footer); + body.add(bodyContents.toContent()); printHtmlDocument(null, getDescription("use", packageElement), body); @@ -242,22 +241,22 @@ String name = packageElement.isUnnamed() ? "" : utils.getPackageName(packageElement); String title = resources.getText("doclet.Window_ClassUse_Header", packageText, name); HtmlTree bodyTree = getBody(getWindowTitle(title)); - HtmlTree htmlTree = HtmlTree.HEADER(); - addTop(htmlTree); + Content headerContent = new ContentBuilder(); + addTop(headerContent); Content linkContent = getModuleLink(utils.elementUtils.getModuleOf(packageElement), contents.moduleLabel); navBar.setNavLinkModule(linkContent); navBar.setUserHeader(getUserHeaderFooter(true)); - htmlTree.add(navBar.getContent(true)); - bodyTree.add(htmlTree); - ContentBuilder headContent = new ContentBuilder(); - headContent.add(contents.getContent("doclet.ClassUse_Title", packageText)); - headContent.add(new HtmlTree(HtmlTag.BR)); - headContent.add(name); + headerContent.add(navBar.getContent(true)); + ContentBuilder headingContent = new ContentBuilder(); + headingContent.add(contents.getContent("doclet.ClassUse_Title", packageText)); + headingContent.add(new HtmlTree(HtmlTag.BR)); + headingContent.add(name); Content heading = HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING, true, - HtmlStyle.title, headContent); + HtmlStyle.title, headingContent); Content div = HtmlTree.DIV(HtmlStyle.header, heading); - mainTree.add(div); + bodyContents.setHeader(headerContent) + .addMainContent(div); return bodyTree; } } diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageWriterImpl.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageWriterImpl.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageWriterImpl.java Wed Nov 27 13:08:16 2019 +0100 @@ -33,6 +33,7 @@ import javax.lang.model.element.TypeElement; import com.sun.source.doctree.DocTree; +import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; import jdk.javadoc.internal.doclets.formats.html.markup.Entity; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; @@ -72,17 +73,14 @@ protected PackageElement packageElement; /** - * The HTML tree for main tag. - */ - protected HtmlTree mainTree = HtmlTree.MAIN(); - - /** * The HTML tree for section tag. */ protected HtmlTree sectionTree = HtmlTree.SECTION(HtmlStyle.packageDescription, new ContentBuilder()); private final Navigation navBar; + private final BodyContents bodyContents = new BodyContents(); + /** * Constructor to construct PackageWriter object and to generate * "package-summary.html" file in the respective package directory. @@ -99,7 +97,7 @@ configuration.docPaths.forPackage(packageElement) .resolve(DocPaths.PACKAGE_SUMMARY)); this.packageElement = packageElement; - this.navBar = new Navigation(packageElement, configuration, fixedNavDiv, PageMode.PACKAGE, path); + this.navBar = new Navigation(packageElement, configuration, PageMode.PACKAGE, path); } /** @@ -108,14 +106,13 @@ @Override public Content getPackageHeader(String heading) { HtmlTree bodyTree = getBody(getWindowTitle(utils.getPackageName(packageElement))); - HtmlTree htmlTree = HtmlTree.HEADER(); - addTop(htmlTree); + Content headerContent = new ContentBuilder(); + addTop(headerContent); Content linkContent = getModuleLink(utils.elementUtils.getModuleOf(packageElement), contents.moduleLabel); navBar.setNavLinkModule(linkContent); navBar.setUserHeader(getUserHeaderFooter(true)); - htmlTree.add(navBar.getContent(true)); - bodyTree.add(htmlTree); + headerContent.add(navBar.getContent(true)); HtmlTree div = new HtmlTree(HtmlTag.DIV); div.setStyle(HtmlStyle.header); if (configuration.showModules) { @@ -136,7 +133,8 @@ Content packageHead = new StringContent(heading); tHeading.add(packageHead); div.add(tHeading); - mainTree.add(div); + bodyContents.setHeader(headerContent) + .addMainContent(div); return bodyTree; } @@ -295,21 +293,20 @@ * {@inheritDoc} */ @Override - public void addPackageContent(Content contentTree, Content packageContentTree) { - mainTree.add(packageContentTree); - contentTree.add(mainTree); + public void addPackageContent(Content packageContentTree) { + bodyContents.addMainContent(packageContentTree); } /** * {@inheritDoc} */ @Override - public void addPackageFooter(Content contentTree) { + public void addPackageFooter() { Content htmlTree = HtmlTree.FOOTER(); navBar.setUserFooter(getUserHeaderFooter(false)); htmlTree.add(navBar.getContent(false)); addBottom(htmlTree); - contentTree.add(htmlTree); + bodyContents.setFooter(htmlTree); } /** @@ -319,6 +316,7 @@ public void printDocument(Content contentTree) throws DocFileIOException { String description = getDescription("declaration", packageElement); List localStylesheets = getLocalStylesheets(packageElement); + contentTree.add(bodyContents.toContent()); printHtmlDocument(configuration.metakeywords.getMetaKeywords(packageElement), description, localStylesheets, contentTree); } diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SerializedFormWriterImpl.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SerializedFormWriterImpl.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SerializedFormWriterImpl.java Wed Nov 27 13:08:16 2019 +0100 @@ -29,6 +29,7 @@ import javax.lang.model.element.TypeElement; +import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; import jdk.javadoc.internal.doclets.formats.html.markup.Entity; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag; @@ -56,11 +57,6 @@ Set visibleClasses; - /** - * HTML tree for main tag. - */ - private HtmlTree mainTree = HtmlTree.MAIN(); - private final Navigation navBar; /** @@ -69,7 +65,7 @@ public SerializedFormWriterImpl(HtmlConfiguration configuration) { super(configuration, DocPaths.SERIALIZED_FORM); visibleClasses = configuration.getIncludedTypeElements(); - this.navBar = new Navigation(null, configuration, fixedNavDiv, PageMode.SERIALIZEDFORM, path); + this.navBar = new Navigation(null, configuration, PageMode.SERIALIZEDFORM, path); } /** @@ -80,16 +76,16 @@ */ public Content getHeader(String header) { HtmlTree bodyTree = getBody(getWindowTitle(header)); - HtmlTree htmlTree = HtmlTree.HEADER(); - addTop(htmlTree); + Content headerContent = new ContentBuilder(); + addTop(headerContent); navBar.setUserHeader(getUserHeaderFooter(true)); - htmlTree.add(navBar.getContent(true)); - bodyTree.add(htmlTree); + headerContent.add(navBar.getContent(true)); Content h1Content = new StringContent(header); Content heading = HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING, true, HtmlStyle.title, h1Content); Content div = HtmlTree.DIV(HtmlStyle.header, heading); - mainTree.add(div); + bodyContents.setHeader(headerContent) + .addMainContent(div); return bodyTree; } @@ -216,16 +212,14 @@ } /** - * Get the serialized content tree section. + * Add the serialized content tree section. * * @param serializedTreeContent the serialized content tree to be added - * @return a div content tree */ - public Content getSerializedContent(Content serializedTreeContent) { + public void addSerializedContent(Content serializedTreeContent) { HtmlTree divContent = HtmlTree.DIV(HtmlStyle.serializedFormContainer, serializedTreeContent); - mainTree.add(divContent); - return mainTree; + bodyContents.addMainContent(divContent); } /** @@ -238,15 +232,13 @@ /** * Add the footer. - * - * @param serializedTree the serialized tree to be added */ - public void addFooter(Content serializedTree) { + public void addFooter() { Content htmlTree = HtmlTree.FOOTER(); navBar.setUserFooter(getUserHeaderFooter(false)); htmlTree.add(navBar.getContent(false)); addBottom(htmlTree); - serializedTree.add(htmlTree); + bodyContents.setFooter(htmlTree); } /** @@ -254,6 +246,7 @@ */ @Override public void printDocument(Content serializedTree) throws DocFileIOException { + serializedTree.add(bodyContents.toContent()); printHtmlDocument(null, "serialized forms", serializedTree); } diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SingleIndexWriter.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SingleIndexWriter.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SingleIndexWriter.java Wed Nov 27 13:08:16 2019 +0100 @@ -28,6 +28,8 @@ import java.util.Set; import java.util.TreeSet; +import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; +import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; import jdk.javadoc.internal.doclets.formats.html.markup.Entity; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag; @@ -95,15 +97,10 @@ protected void generateIndexFile() throws DocFileIOException { String title = resources.getText("doclet.Window_Single_Index"); HtmlTree body = getBody(getWindowTitle(title)); - HtmlTree header = HtmlTree.HEADER(); - addTop(header); + Content headerContent = new ContentBuilder(); + addTop(headerContent); navBar.setUserHeader(getUserHeaderFooter(true)); - header.add(navBar.getContent(true)); - body.add(header); - HtmlTree main = HtmlTree.MAIN(); - main.add(HtmlTree.DIV(HtmlStyle.header, - HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING, - contents.getContent("doclet.Index")))); + headerContent.add(navBar.getContent(true)); HtmlTree divTree = new HtmlTree(HtmlTag.DIV); divTree.setStyle(HtmlStyle.contentContainer); elements = new TreeSet<>(indexbuilder.getIndexMap().keySet()); @@ -120,13 +117,18 @@ } } addLinksForIndexes(divTree); - main.add(divTree); - body.add(main); HtmlTree footer = HtmlTree.FOOTER(); navBar.setUserFooter(getUserHeaderFooter(false)); footer.add(navBar.getContent(false)); addBottom(footer); - body.add(footer); + body.add(new BodyContents() + .setHeader(headerContent) + .addMainContent(HtmlTree.DIV(HtmlStyle.header, + HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING, + contents.getContent("doclet.Index")))) + .addMainContent(divTree) + .setFooter(footer) + .toContent()); createSearchIndexFiles(); printHtmlDocument(null, "index", body); } diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SplitIndexWriter.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SplitIndexWriter.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SplitIndexWriter.java Wed Nov 27 13:08:16 2019 +0100 @@ -32,6 +32,8 @@ import java.util.Set; import java.util.TreeSet; +import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; +import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; import jdk.javadoc.internal.doclets.formats.html.markup.Entity; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag; @@ -122,12 +124,11 @@ String title = resources.getText("doclet.Window_Split_Index", unicode.toString()); HtmlTree body = getBody(getWindowTitle(title)); - HtmlTree header = HtmlTree.HEADER(); - addTop(header); + Content headerContent = new ContentBuilder(); + addTop(headerContent); navBar.setUserHeader(getUserHeaderFooter(true)); - header.add(navBar.getContent(true)); - body.add(header); - HtmlTree main = HtmlTree.MAIN(); + headerContent.add(navBar.getContent(true)); + Content main = new ContentBuilder(); main.add(HtmlTree.DIV(HtmlStyle.header, HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING, contents.getContent("doclet.Index")))); @@ -144,12 +145,15 @@ } addLinksForIndexes(divTree); main.add(divTree); - body.add(main); HtmlTree footer = HtmlTree.FOOTER(); navBar.setUserFooter(getUserHeaderFooter(false)); footer.add(navBar.getContent(false)); addBottom(footer); - body.add(footer); + body.add(new BodyContents() + .setHeader(headerContent) + .addMainContent(main) + .setFooter(footer) + .toContent()); String description = "index: " + unicode; printHtmlDocument(null, description, body); } diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SubWriterHolderWriter.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SubWriterHolderWriter.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SubWriterHolderWriter.java Wed Nov 27 13:08:16 2019 +0100 @@ -31,6 +31,7 @@ import javax.lang.model.element.TypeElement; import com.sun.source.doctree.DocTree; +import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; @@ -60,9 +61,9 @@ public abstract class SubWriterHolderWriter extends HtmlDocletWriter { /** - * The HTML tree for main tag. + * The HTML builder for the body contents. */ - protected HtmlTree mainTree = HtmlTree.MAIN(); + protected BodyContents bodyContents = new BodyContents(); public SubWriterHolderWriter(HtmlConfiguration configuration, DocPath filename) { super(configuration, filename); @@ -191,22 +192,19 @@ /** * Add the class content tree. * - * @param contentTree content tree to which the class content will be added * @param classContentTree class content tree which will be added to the content tree */ - public void addClassContentTree(Content contentTree, Content classContentTree) { - mainTree.add(classContentTree); - contentTree.add(mainTree); + public void addClassContentTree(Content classContentTree) { + bodyContents.addMainContent(classContentTree); } /** * Add the annotation content tree. * - * @param contentTree content tree to which the annotation content will be added * @param annotationContentTree annotation content tree which will be added to the content tree */ - public void addAnnotationContentTree(Content contentTree, Content annotationContentTree) { - addClassContentTree(contentTree, annotationContentTree); + public void addAnnotationContentTree(Content annotationContentTree) { + addClassContentTree(annotationContentTree); } /** diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TreeWriter.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TreeWriter.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TreeWriter.java Wed Nov 27 13:08:16 2019 +0100 @@ -29,6 +29,8 @@ import javax.lang.model.element.PackageElement; +import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; +import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; @@ -70,6 +72,8 @@ private final Navigation navBar; + protected BodyContents bodyContents; + /** * Constructor to construct TreeWriter object. * @@ -81,7 +85,8 @@ super(configuration, filename, classtree); packages = configuration.packages; classesOnly = packages.isEmpty(); - this.navBar = new Navigation(null, configuration, fixedNavDiv, PageMode.TREE, path); + this.navBar = new Navigation(null, configuration, PageMode.TREE, path); + this.bodyContents = new BodyContents(); } /** @@ -111,21 +116,23 @@ HtmlStyle.title, headContent); Content div = HtmlTree.DIV(HtmlStyle.header, heading); addPackageTreeLinks(div); - HtmlTree htmlTree = HtmlTree.MAIN(); - htmlTree.add(div); + Content mainContent = new ContentBuilder(); + mainContent.add(div); HtmlTree divTree = new HtmlTree(HtmlTag.DIV); divTree.setStyle(HtmlStyle.contentContainer); addTree(classtree.baseClasses(), "doclet.Class_Hierarchy", divTree); addTree(classtree.baseInterfaces(), "doclet.Interface_Hierarchy", divTree); addTree(classtree.baseAnnotationTypes(), "doclet.Annotation_Type_Hierarchy", divTree); addTree(classtree.baseEnums(), "doclet.Enum_Hierarchy", divTree, true); - htmlTree.add(divTree); - body.add(htmlTree); - htmlTree = HtmlTree.FOOTER(); + mainContent.add(divTree); + HtmlTree footerTree = HtmlTree.FOOTER(); navBar.setUserFooter(getUserHeaderFooter(false)); - htmlTree.add(navBar.getContent(false)); - addBottom(htmlTree); - body.add(htmlTree); + footerTree.add(navBar.getContent(false)); + addBottom(footerTree); + body.add(bodyContents + .addMainContent(mainContent) + .setFooter(footerTree) + .toContent()); printHtmlDocument(null, "class tree", body); } @@ -176,11 +183,11 @@ protected HtmlTree getTreeHeader() { String title = resources.getText("doclet.Window_Class_Hierarchy"); HtmlTree bodyTree = getBody(getWindowTitle(title)); - HtmlTree htmlTree = HtmlTree.HEADER(); - addTop(htmlTree); + Content headerContent = new ContentBuilder(); + addTop(headerContent); navBar.setUserHeader(getUserHeaderFooter(true)); - htmlTree.add(navBar.getContent(true)); - bodyTree.add(htmlTree); + headerContent.add(navBar.getContent(true)); + bodyContents.setHeader(headerContent); return bodyTree; } diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/BodyContents.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/BodyContents.java Wed Nov 27 13:08:16 2019 +0100 @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package jdk.javadoc.internal.doclets.formats.html.markup; + +import jdk.javadoc.internal.doclets.toolkit.Content; + +import java.util.ArrayList; +import java.util.List; + +/** + * A builder for the contents of the BODY element. + * + *

This is NOT part of any supported API. + * If you write code that depends on this, you do so at your own risk. + * This code and its internal interfaces are subject to change or + * deletion without notice. + */ +public class BodyContents { + + private List mainContents = new ArrayList<>(); + private Content header = HtmlTree.EMPTY; + private Content footer = HtmlTree.EMPTY; + + public BodyContents addMainContent(Content content) { + mainContents.add(content); + return this; + } + + public BodyContents setHeader(Content header) { + this.header = header; + return this; + } + + public BodyContents setFooter(Content footer) { + this.footer = footer; + return this; + } + + /** + * Returns the HTML for the contents of the BODY element. + * + * @return the HTML + */ + public Content toContent() { + HtmlTree mainTree = HtmlTree.MAIN(); + mainContents.forEach(mainTree::add); + HtmlTree flexHeader = HtmlTree.HEADER().setStyle(HtmlStyle.flexHeader); + flexHeader.add(header); + HtmlTree flexBox = HtmlTree.DIV(HtmlStyle.flexBox, flexHeader); + HtmlTree flexContent = HtmlTree.DIV(HtmlStyle.flexContent, mainTree); + flexContent.add(footer); + flexBox.add(flexContent); + return flexBox; + } +} diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlStyle.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlStyle.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlStyle.java Wed Nov 27 13:08:16 2019 +0100 @@ -73,7 +73,9 @@ externalLink, fieldDetails, fieldSummary, - fixedNav, + flexBox, + flexHeader, + flexContent, header, helpSection, hierarchy, diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlTree.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlTree.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlTree.java Wed Nov 27 13:08:16 2019 +0100 @@ -584,21 +584,6 @@ } /** - * Generates a MAIN tag with role attribute, style attribute and some content. - * - * @param styleClass style of the MAIN tag - * @param body content of the MAIN tag - * @return an HtmlTree object for the MAIN tag - */ - public static HtmlTree MAIN(HtmlStyle styleClass, Content body) { - HtmlTree htmltree = HtmlTree.MAIN(body); - if (styleClass != null) { - htmltree.setStyle(styleClass); - } - return htmltree; - } - - /** * Generates a META tag with the http-equiv, content and charset attributes. * * @param httpEquiv http equiv attribute for the META tag diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Navigation.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Navigation.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Navigation.java Wed Nov 27 13:08:16 2019 +0100 @@ -70,7 +70,6 @@ private final DocPath path; private final DocPath pathToRoot; private final Links links; - private final HtmlTree fixedNavDiv; private final PageMode documentedPage; private Content navLinkModule; private Content navLinkPackage; @@ -85,9 +84,6 @@ private Content userFooter; private final String rowListTitle; private final Content searchLabel; - private static final Script FIXED_NAV_SCRIPT = new Script("\n"); public enum PageMode { ALLCLASSES, @@ -133,15 +129,12 @@ * * @param element element being documented. null if its not an element documentation page * @param configuration the configuration object - * @param fixedNavDiv the fixed navigation for the header navigation * @param page the kind of page being documented * @param path the DocPath object */ - public Navigation(Element element, HtmlConfiguration configuration, HtmlTree fixedNavDiv, - PageMode page, DocPath path) { + public Navigation(Element element, HtmlConfiguration configuration, PageMode page, DocPath path) { this.configuration = configuration; this.element = element; - this.fixedNavDiv = fixedNavDiv; this.contents = configuration.contents; this.documentedPage = page; this.path = path; @@ -941,10 +934,6 @@ tree.add(searchDiv); } - private void addFixedNavScript(Content tree) { - tree.add(FIXED_NAV_SCRIPT.asContent()); - } - /** * Get the navigation content. * @@ -952,69 +941,58 @@ * @return the navigation contents */ public Content getContent(boolean top) { - Content contentTree = new ContentBuilder(); - if (!configuration.nonavbar) { - Deque queue; - Content tree = HtmlTree.NAV(); - HtmlTree navDiv = new HtmlTree(HtmlTag.DIV); - if (top) { - queue = topBottomNavContents.get(Position.TOP); - fixedNavDiv.add(Position.TOP.startOfNav()); - navDiv.setStyle(HtmlStyle.topNav); - } else { - queue = topBottomNavContents.get(Position.BOTTOM); - tree.add(Position.BOTTOM.startOfNav()); - navDiv.setStyle(HtmlStyle.bottomNav); - } - navDiv.add(queue.poll()); - HtmlTree skipLinkDiv = HtmlTree.DIV(HtmlStyle.skipNav, queue.poll()); - navDiv.add(skipLinkDiv); - navDiv.add(queue.poll()); - HtmlTree navList = new HtmlTree(HtmlTag.UL); - navList.setStyle(HtmlStyle.navList); - navList.put(HtmlAttr.TITLE, rowListTitle); - fixedNavDiv.setStyle(HtmlStyle.fixedNav); - addMainNavLinks(navList); - navDiv.add(navList); - Content aboutDiv = HtmlTree.DIV(HtmlStyle.aboutLanguage, top ? userHeader : userFooter); - navDiv.add(aboutDiv); - if (top) { - fixedNavDiv.add(navDiv); - } else { - tree.add(navDiv); - } - HtmlTree subDiv = new HtmlTree(HtmlTag.DIV); - subDiv.setStyle(HtmlStyle.subNav); - HtmlTree div = new HtmlTree(HtmlTag.DIV); - // Add the summary links if present. - HtmlTree ulNavSummary = new HtmlTree(HtmlTag.UL); - ulNavSummary.setStyle(HtmlStyle.subNavList); - addSummaryLinks(ulNavSummary); - div.add(ulNavSummary); - // Add the detail links if present. - HtmlTree ulNavDetail = new HtmlTree(HtmlTag.UL); - ulNavDetail.setStyle(HtmlStyle.subNavList); - addDetailLinks(ulNavDetail); - div.add(ulNavDetail); - subDiv.add(div); - if (top && configuration.createindex) { - addSearch(subDiv); - } - if (top) { - fixedNavDiv.add(subDiv); - fixedNavDiv.add(queue.poll()); - fixedNavDiv.add(Position.TOP.endOfNav()); - tree.add(fixedNavDiv); - HtmlTree paddingDiv = HtmlTree.DIV(HtmlStyle.navPadding, Entity.NO_BREAK_SPACE); - tree.add(paddingDiv); - addFixedNavScript(tree); - } else { - tree.add(subDiv); - tree.add(queue.poll()); - tree.add(Position.BOTTOM.endOfNav()); - } - return tree; + if (configuration.nonavbar) { + return new ContentBuilder(); + } + Deque queue; + Content tree = HtmlTree.NAV(); + HtmlTree navDiv = new HtmlTree(HtmlTag.DIV); + if (top) { + queue = topBottomNavContents.get(Position.TOP); + tree.add(Position.TOP.startOfNav()); + navDiv.setStyle(HtmlStyle.topNav); + } else { + queue = topBottomNavContents.get(Position.BOTTOM); + tree.add(Position.BOTTOM.startOfNav()); + navDiv.setStyle(HtmlStyle.bottomNav); } - return contentTree; + navDiv.add(queue.poll()); + HtmlTree skipLinkDiv = HtmlTree.DIV(HtmlStyle.skipNav, queue.poll()); + navDiv.add(skipLinkDiv); + navDiv.add(queue.poll()); + HtmlTree navList = new HtmlTree(HtmlTag.UL); + navList.setStyle(HtmlStyle.navList); + navList.put(HtmlAttr.TITLE, rowListTitle); + addMainNavLinks(navList); + navDiv.add(navList); + Content aboutDiv = HtmlTree.DIV(HtmlStyle.aboutLanguage, top ? userHeader : userFooter); + navDiv.add(aboutDiv); + tree.add(navDiv); + HtmlTree subDiv = new HtmlTree(HtmlTag.DIV); + subDiv.setStyle(HtmlStyle.subNav); + HtmlTree div = new HtmlTree(HtmlTag.DIV); + // Add the summary links if present. + HtmlTree ulNavSummary = new HtmlTree(HtmlTag.UL); + ulNavSummary.setStyle(HtmlStyle.subNavList); + addSummaryLinks(ulNavSummary); + div.add(ulNavSummary); + // Add the detail links if present. + HtmlTree ulNavDetail = new HtmlTree(HtmlTag.UL); + ulNavDetail.setStyle(HtmlStyle.subNavList); + addDetailLinks(ulNavDetail); + div.add(ulNavDetail); + subDiv.add(div); + if (top && configuration.createindex) { + addSearch(subDiv); + } + tree.add(subDiv); + if (top) { + tree.add(Position.TOP.endOfNav()); + tree.add(HtmlTree.DIV(HtmlStyle.skipNav, queue.poll())); + } else { + tree.add(queue.poll()); + tree.add(Position.BOTTOM.endOfNav()); + } + return tree; } } diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/AnnotationTypeWriter.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/AnnotationTypeWriter.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/AnnotationTypeWriter.java Wed Nov 27 13:08:16 2019 +0100 @@ -112,10 +112,9 @@ /** * Add the annotation content tree to the documentation content tree. * - * @param contentTree content tree to which the annotation content will be added * @param annotationContentTree annotation content tree which will be added to the content tree */ - public void addAnnotationContentTree(Content contentTree, Content annotationContentTree); + public void addAnnotationContentTree(Content annotationContentTree); /** * Get the member tree. @@ -143,10 +142,8 @@ /** * Add the footer of the page. - * - * @param contentTree content tree to which the footer will be added */ - public void addFooter(Content contentTree); + public void addFooter(); /** * Print the document. diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/ClassWriter.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/ClassWriter.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/ClassWriter.java Wed Nov 27 13:08:16 2019 +0100 @@ -177,17 +177,14 @@ /** * Add the class content tree. * - * @param contentTree content tree to which the class content will be added * @param classContentTree class content tree which will be added to the content tree */ - public void addClassContentTree(Content contentTree, Content classContentTree); + public void addClassContentTree(Content classContentTree); /** * Add the footer of the page. - * - * @param contentTree content tree to which the footer will be added */ - public void addFooter(Content contentTree); + public void addFooter(); /** * Print the document. diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/ConstantsSummaryWriter.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/ConstantsSummaryWriter.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/ConstantsSummaryWriter.java Wed Nov 27 13:08:16 2019 +0100 @@ -75,10 +75,9 @@ /** * Add the content list to the documentation tree. * - * @param contentTree the tree to which the contents list will be added * @param contentListTree the content that will be added to the list */ - public abstract void addContentsList(Content contentTree, Content contentListTree); + public abstract void addContentsList(Content contentListTree); /** * Get the constant summaries for the document. @@ -129,17 +128,14 @@ /** * Add the summaries list to the content tree. * - * @param contentTree the tree to which the summaries list will be added * @param summariesTree the summaries content tree that will be added to the list */ - public abstract void addConstantSummaries(Content contentTree, Content summariesTree); + public abstract void addConstantSummaries(Content summariesTree); /** * Adds the footer for the summary documentation. - * - * @param contentTree content tree to which the footer will be added */ - public abstract void addFooter(Content contentTree); + public abstract void addFooter(); /** * Print the constants summary document. diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/ModuleSummaryWriter.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/ModuleSummaryWriter.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/ModuleSummaryWriter.java Wed Nov 27 13:08:16 2019 +0100 @@ -111,17 +111,14 @@ /** * Adds the module content tree to the documentation tree. * - * @param contentTree the tree to which the module content tree will be added * @param moduleContentTree the content tree that will be added */ - public abstract void addModuleContent(Content contentTree, Content moduleContentTree); + public abstract void addModuleContent(Content moduleContentTree); /** * Adds the footer to the documentation tree. - * - * @param contentTree the tree to which the footer will be added */ - public abstract void addModuleFooter(Content contentTree); + public abstract void addModuleFooter(); /** * Print the module summary document. diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/PackageSummaryWriter.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/PackageSummaryWriter.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/PackageSummaryWriter.java Wed Nov 27 13:08:16 2019 +0100 @@ -143,17 +143,14 @@ * Adds the tag information from the "packages.html" or "package-info.java" file to the * documentation tree. * - * @param contentTree the content tree to which the package content tree will be added * @param packageContentTree the package content tree to be added */ - public abstract void addPackageContent(Content contentTree, Content packageContentTree); + public abstract void addPackageContent(Content packageContentTree); /** * Adds the footer to the documentation tree. - * - * @param contentTree the tree to which the footer will be added */ - public abstract void addPackageFooter(Content contentTree); + public abstract void addPackageFooter(); /** * Print the package summary document. diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/SerializedFormWriter.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/SerializedFormWriter.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/SerializedFormWriter.java Wed Nov 27 13:08:16 2019 +0100 @@ -140,19 +140,16 @@ public SerialMethodWriter getSerialMethodWriter(TypeElement typeElement); /** - * Get the serialized content. + * Add the serialized content to the body content. * * @param serializedTreeContent content for serialized data - * @return a content tree for serialized information */ - public Content getSerializedContent(Content serializedTreeContent); + public void addSerializedContent(Content serializedTreeContent); /** * Add the footer. - * - * @param serializedTree the serialized tree to be added */ - public void addFooter(Content serializedTree); + public void addFooter(); /** * Print the serialized form document. diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/AnnotationTypeBuilder.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/AnnotationTypeBuilder.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/AnnotationTypeBuilder.java Wed Nov 27 13:08:16 2019 +0100 @@ -59,11 +59,6 @@ private final AnnotationTypeWriter writer; /** - * The content tree for the annotation documentation. - */ - private Content contentTree; - - /** * Construct a new ClassBuilder. * * @param context the build context. @@ -97,17 +92,16 @@ */ @Override public void build() throws DocletException { - buildAnnotationTypeDoc(contentTree); + buildAnnotationTypeDoc(); } /** * Build the annotation type documentation. * - * @param contentTree the content tree to which the documentation will be added * @throws DocletException if there is a problem building the documentation */ - protected void buildAnnotationTypeDoc(Content contentTree) throws DocletException { - contentTree = writer.getHeader(resources.getText("doclet.AnnotationType") + + protected void buildAnnotationTypeDoc() throws DocletException { + Content contentTree = writer.getHeader(resources.getText("doclet.AnnotationType") + " " + utils.getSimpleName(annotationType)); Content annotationContentTree = writer.getAnnotationContentHeader(); @@ -115,8 +109,8 @@ buildMemberSummary(annotationContentTree); buildAnnotationTypeMemberDetails(annotationContentTree); - writer.addAnnotationContentTree(contentTree, annotationContentTree); - writer.addFooter(contentTree); + writer.addAnnotationContentTree(annotationContentTree); + writer.addFooter(); writer.printDocument(contentTree); copyDocFiles(); } diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/ClassBuilder.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/ClassBuilder.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/ClassBuilder.java Wed Nov 27 13:08:16 2019 +0100 @@ -69,11 +69,6 @@ */ private final boolean isEnum; - /** - * The content tree for the class documentation. - */ - private Content contentTree; - private final Utils utils; /** @@ -118,16 +113,15 @@ */ @Override public void build() throws DocletException { - buildClassDoc(contentTree); + buildClassDoc(); } /** * Handles the {@literal } tag. * - * @param contentTree the content tree to which the documentation will be added * @throws DocletException if there is a problem while building the documentation */ - protected void buildClassDoc(Content contentTree) throws DocletException { + protected void buildClassDoc() throws DocletException { String key; if (isInterface) { key = "doclet.Interface"; @@ -136,7 +130,7 @@ } else { key = "doclet.Class"; } - contentTree = writer.getHeader(resources.getText(key) + " " + Content contentTree = writer.getHeader(resources.getText(key) + " " + utils.getSimpleName(typeElement)); Content classContentTree = writer.getClassContentHeader(); @@ -145,8 +139,8 @@ buildMemberSummary(classContentTree); buildMemberDetails(classContentTree); - writer.addClassContentTree(contentTree, classContentTree); - writer.addFooter(contentTree); + writer.addClassContentTree(classContentTree); + writer.addFooter(); writer.printDocument(contentTree); copyDocFiles(); } diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/ConstantsSummaryBuilder.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/ConstantsSummaryBuilder.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/ConstantsSummaryBuilder.java Wed Nov 27 13:08:16 2019 +0100 @@ -84,11 +84,6 @@ private TypeElement currentClass; /** - * The content tree for the constant summary documentation. - */ - private Content contentTree; - - /** * True if first package is listed. */ private boolean first = true; @@ -129,31 +124,28 @@ //Doclet does not support this output. return; } - buildConstantSummary(contentTree); + buildConstantSummary(); } /** * Build the constant summary. * - * @param contentTree the content tree to which the documentation will be added * @throws DocletException if there is a problem while building the documentation */ - protected void buildConstantSummary(Content contentTree) throws DocletException { - contentTree = writer.getHeader(); + protected void buildConstantSummary() throws DocletException { + Content contentTree = writer.getHeader(); - buildContents(contentTree); - buildConstantSummaries(contentTree); + buildContents(); + buildConstantSummaries(); - writer.addFooter(contentTree); + writer.addFooter(); writer.printDocument(contentTree); } /** * Build the list of packages. - * - * @param contentTree the content tree to which the content list will be added */ - protected void buildContents(Content contentTree) { + protected void buildContents() { Content contentListTree = writer.getContentsHeader(); printedPackageHeaders.clear(); for (PackageElement pkg : configuration.packages) { @@ -161,16 +153,15 @@ writer.addLinkToPackageContent(pkg, printedPackageHeaders, contentListTree); } } - writer.addContentsList(contentTree, contentListTree); + writer.addContentsList(contentListTree); } /** * Build the summary for each documented package. * - * @param contentTree the tree to which the summaries will be added * @throws DocletException if there is a problem while building the documentation */ - protected void buildConstantSummaries(Content contentTree) throws DocletException { + protected void buildConstantSummaries() throws DocletException { printedPackageHeaders.clear(); Content summariesTree = writer.getConstantSummaries(); for (PackageElement aPackage : configuration.packages) { @@ -184,7 +175,7 @@ first = false; } } - writer.addConstantSummaries(contentTree, summariesTree); + writer.addConstantSummaries(summariesTree); } /** diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/ModuleSummaryBuilder.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/ModuleSummaryBuilder.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/ModuleSummaryBuilder.java Wed Nov 27 13:08:16 2019 +0100 @@ -56,11 +56,6 @@ private final ModuleSummaryWriter moduleWriter; /** - * The content that will be added to the module summary documentation tree. - */ - private Content contentTree; - - /** * Construct a new ModuleSummaryBuilder. * * @param context the build context. @@ -101,21 +96,20 @@ //Doclet does not support this output. return; } - buildModuleDoc(contentTree); + buildModuleDoc(); } /** * Build the module documentation. * - * @param contentTree the content tree to which the documentation will be added * @throws DocletException if there is a problem while building the documentation */ - protected void buildModuleDoc(Content contentTree) throws DocletException { - contentTree = moduleWriter.getModuleHeader(mdle.getQualifiedName().toString()); + protected void buildModuleDoc() throws DocletException { + Content contentTree = moduleWriter.getModuleHeader(mdle.getQualifiedName().toString()); - buildContent(contentTree); + buildContent(); - moduleWriter.addModuleFooter(contentTree); + moduleWriter.addModuleFooter(); moduleWriter.printDocument(contentTree); DocFilesHandler docFilesHandler = configuration.getWriterFactory().getDocFilesHandler(mdle); docFilesHandler.copyDocFiles(); @@ -124,18 +118,16 @@ /** * Build the content for the module doc. * - * @param contentTree the content tree to which the module contents - * will be added * @throws DocletException if there is a problem while building the documentation */ - protected void buildContent(Content contentTree) throws DocletException { + protected void buildContent() throws DocletException { Content moduleContentTree = moduleWriter.getContentHeader(); buildModuleDescription(moduleContentTree); buildModuleTags(moduleContentTree); buildSummary(moduleContentTree); - moduleWriter.addModuleContent(contentTree, moduleContentTree); + moduleWriter.addModuleContent(moduleContentTree); } /** diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/PackageSummaryBuilder.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/PackageSummaryBuilder.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/PackageSummaryBuilder.java Wed Nov 27 13:08:16 2019 +0100 @@ -61,11 +61,6 @@ private final PackageSummaryWriter packageWriter; /** - * The content that will be added to the package summary documentation tree. - */ - private Content contentTree; - - /** * Construct a new PackageSummaryBuilder. * * @param context the build context. @@ -107,21 +102,20 @@ //Doclet does not support this output. return; } - buildPackageDoc(contentTree); + buildPackageDoc(); } /** * Build the package documentation. * - * @param contentTree the content tree to which the documentation will be added * @throws DocletException if there is a problem while building the documentation */ - protected void buildPackageDoc(Content contentTree) throws DocletException { - contentTree = packageWriter.getPackageHeader(utils.getPackageName(packageElement)); + protected void buildPackageDoc() throws DocletException { + Content contentTree = packageWriter.getPackageHeader(utils.getPackageName(packageElement)); - buildContent(contentTree); + buildContent(); - packageWriter.addPackageFooter(contentTree); + packageWriter.addPackageFooter(); packageWriter.printDocument(contentTree); DocFilesHandler docFilesHandler = configuration .getWriterFactory() @@ -132,18 +126,16 @@ /** * Build the content for the package. * - * @param contentTree the content tree to which the package contents - * will be added * @throws DocletException if there is a problem while building the documentation */ - protected void buildContent(Content contentTree) throws DocletException { + protected void buildContent() throws DocletException { Content packageContentTree = packageWriter.getContentHeader(); buildPackageDescription(packageContentTree); buildPackageTags(packageContentTree); buildSummary(packageContentTree); - packageWriter.addPackageContent(contentTree, packageContentTree); + packageWriter.addPackageContent(packageContentTree); } /** diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/SerializedFormBuilder.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/SerializedFormBuilder.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/SerializedFormBuilder.java Wed Nov 27 13:08:16 2019 +0100 @@ -96,12 +96,6 @@ protected Element currentMember; /** - * The content that will be added to the serialized form documentation tree. - */ - private Content contentTree; - - - /** * Construct a new SerializedFormBuilder. * @param context the build context. */ @@ -137,32 +131,30 @@ //Doclet does not support this output. return; } - buildSerializedForm(contentTree); + buildSerializedForm(); } /** * Build the serialized form. * - * @param serializedTree content tree to which the documentation will be added * @throws DocletException if there is a problem while building the documentation */ - protected void buildSerializedForm(Content serializedTree) throws DocletException { - serializedTree = writer.getHeader(resources.getText( + protected void buildSerializedForm() throws DocletException { + Content contentTree = writer.getHeader(resources.getText( "doclet.Serialized_Form")); - buildSerializedFormSummaries(serializedTree); + buildSerializedFormSummaries(); - writer.addFooter(serializedTree); - writer.printDocument(serializedTree); + writer.addFooter(); + writer.printDocument(contentTree); } /** * Build the serialized form summaries. * - * @param serializedTree content tree to which the documentation will be added * @throws DocletException if there is a problem while building the documentation */ - protected void buildSerializedFormSummaries(Content serializedTree) + protected void buildSerializedFormSummaries() throws DocletException { Content serializedSummariesTree = writer.getSerializedSummariesHeader(); for (PackageElement pkg : configuration.packages) { @@ -170,8 +162,7 @@ buildPackageSerializedForm(serializedSummariesTree); } - serializedTree.add(writer.getSerializedContent( - serializedSummariesTree)); + writer.addSerializedContent(serializedSummariesTree); } /** diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/script.js --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/script.js Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/script.js Wed Nov 27 13:08:16 2019 +0100 @@ -102,9 +102,6 @@ if (!tagSearchIndex) { createElem(doc, tag, 'tag-search-index.js'); } - $(window).resize(function() { - $('.navPadding').css('padding-top', $('.fixedNav').css("height")); - }); } function createElem(doc, tag, path) { diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/stylesheet.css --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/stylesheet.css Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/stylesheet.css Wed Nov 27 13:08:16 2019 +0100 @@ -40,13 +40,6 @@ a[name] { color:#353833; } -a[name]:before, a[name]:target, a[id]:before, a[id]:target { - content:""; - display:inline-block; - position:relative; - padding-top:129px; - margin-top:-129px; -} pre { font-family:'DejaVu Sans Mono', monospace; font-size:14px; @@ -131,14 +124,19 @@ /* * Styles for navigation bar. */ -.navPadding { - padding-top: 107px; +.flexBox { + position:fixed; + display:flex; + flex-direction:column; + height: 100%; + width: 100%; } -.fixedNav { - position:fixed; - width:100%; - z-index:999; - background-color:#ffffff; +.flexHeader { + flex: 0 0 auto; +} +.flexContent { + flex: 1 1 auto; + overflow-y: auto; } .topNav { background-color:#4D7A97; @@ -632,7 +630,7 @@ background-size:12px; border:0 none; width:16px; - height:17px; + height:16px; position:relative; left:-4px; top:-4px; @@ -649,8 +647,8 @@ font-style:italic; font-size:12px; } -.searchTagResult:before, .searchTagResult:target { - color:red; +.searchTagResult:target { + background-color:yellow; } .moduleGraph span { display:none; diff -r 5af9fa90cd7b -r 48b88b9c11eb test/langtools/jdk/javadoc/doclet/testHtmlLandmarkRegions/TestHtmlLandmarkRegions.java --- a/test/langtools/jdk/javadoc/doclet/testHtmlLandmarkRegions/TestHtmlLandmarkRegions.java Wed Nov 27 12:18:40 2019 +0100 +++ b/test/langtools/jdk/javadoc/doclet/testHtmlLandmarkRegions/TestHtmlLandmarkRegions.java Wed Nov 27 13:08:16 2019 +0100 @@ -23,7 +23,7 @@ /* * @test - * @bug 8210047 8199892 8215599 + * @bug 8210047 8199892 8215599 8223378 * @summary some pages contains content outside of landmark region * @library /tools/lib ../../lib * @modules @@ -74,7 +74,7 @@ checkExit(Exit.OK); checkOrder("index.html", - "

\n" + "
\n" + "