Skip to content

Commit d47336b

Browse files
8248320: Provide a unique accessible name for <nav role="navigation">
Reviewed-by: hannesw
1 parent 64a9811 commit d47336b

31 files changed

+270
-543
lines changed

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractOverviewIndexWriter.java

Lines changed: 2 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,6 @@
4646
*/
4747
public abstract class AbstractOverviewIndexWriter extends HtmlDocletWriter {
4848

49-
protected Navigation navBar;
50-
5149
/**
5250
* Constructs the AbstractOverviewIndexWriter.
5351
*
@@ -57,32 +55,6 @@ public abstract class AbstractOverviewIndexWriter extends HtmlDocletWriter {
5755
public AbstractOverviewIndexWriter(HtmlConfiguration configuration,
5856
DocPath filename) {
5957
super(configuration, filename);
60-
this.navBar = new Navigation(null, configuration, PageMode.OVERVIEW, path);
61-
}
62-
63-
/**
64-
* Adds the top text (from the -top option), the upper
65-
* navigation bar, and then the title (from the"-header"
66-
* option), at the top of page.
67-
*
68-
* @param header the documentation tree to which the navigation bar header will be added
69-
*/
70-
protected void addNavigationBarHeader(Content header) {
71-
addTop(header);
72-
navBar.setUserHeader(getUserHeaderFooter(true));
73-
header.add(navBar.getContent(Navigation.Position.TOP));
74-
}
75-
76-
/**
77-
* Adds the lower navigation bar and the bottom text
78-
* (from the -bottom option) at the bottom of page.
79-
*
80-
* @param footer the documentation tree to which the navigation bar footer will be added
81-
*/
82-
protected void addNavigationBarFooter(Content footer) {
83-
navBar.setUserFooter(getUserHeaderFooter(false));
84-
footer.add(navBar.getContent(Navigation.Position.BOTTOM));
85-
addBottom(footer);
8658
}
8759

8860
/**
@@ -123,17 +95,13 @@ protected void buildOverviewIndexFile(String title, String description)
12395
throws DocFileIOException {
12496
String windowOverview = resources.getText(title);
12597
Content body = getBody(getWindowTitle(windowOverview));
126-
Content header = new ContentBuilder();
127-
addNavigationBarHeader(header);
12898
Content main = new ContentBuilder();
12999
addOverviewHeader(main);
130100
addIndex(main);
131-
Content footer = HtmlTree.FOOTER();
132-
addNavigationBarFooter(footer);
133101
body.add(new BodyContents()
134-
.setHeader(header)
102+
.setHeader(getHeader(PageMode.OVERVIEW))
135103
.addMainContent(main)
136-
.setFooter(footer));
104+
.setFooter(getFooter()));
137105
printHtmlDocument(
138106
configuration.metakeywords.getOverviewMetaKeywords(title, configuration.getOptions().docTitle()),
139107
description, body);

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AllClassesIndexWriter.java

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -93,24 +93,15 @@ private static void generate(HtmlConfiguration configuration, IndexBuilder index
9393
*/
9494
protected void buildAllClassesFile() throws DocFileIOException {
9595
String label = resources.getText("doclet.All_Classes");
96-
Content header = new ContentBuilder();
97-
addTop(header);
98-
Navigation navBar = new Navigation(null, configuration, PageMode.ALL_CLASSES, path);
99-
navBar.setUserHeader(getUserHeaderFooter(true));
100-
header.add(navBar.getContent(Navigation.Position.TOP));
10196
Content allClassesContent = new ContentBuilder();
10297
addContents(allClassesContent);
10398
Content mainContent = new ContentBuilder();
10499
mainContent.add(allClassesContent);
105-
Content footer = HtmlTree.FOOTER();
106-
navBar.setUserFooter(getUserHeaderFooter(false));
107-
footer.add(navBar.getContent(Navigation.Position.BOTTOM));
108-
addBottom(footer);
109100
HtmlTree bodyTree = getBody(getWindowTitle(label));
110101
bodyTree.add(new BodyContents()
111-
.setHeader(header)
102+
.setHeader(getHeader(PageMode.ALL_CLASSES))
112103
.addMainContent(mainContent)
113-
.setFooter(footer));
104+
.setFooter(getFooter()));
114105
printHtmlDocument(null, "class index", bodyTree);
115106
}
116107

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AllPackagesIndexWriter.java

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -74,27 +74,18 @@ private static void generate(HtmlConfiguration configuration, DocPath fileName)
7474
*/
7575
protected void buildAllPackagesFile() throws DocFileIOException {
7676
String label = resources.getText("doclet.All_Packages");
77-
Content headerContent = new ContentBuilder();
78-
Navigation navBar = new Navigation(null, configuration, PageMode.ALL_PACKAGES, path);
79-
addTop(headerContent);
80-
navBar.setUserHeader(getUserHeaderFooter(true));
81-
headerContent.add(navBar.getContent(Navigation.Position.TOP));
8277
Content mainContent = new ContentBuilder();
8378
addPackages(mainContent);
8479
Content titleContent = contents.allPackagesLabel;
8580
Content pHeading = HtmlTree.HEADING_TITLE(Headings.PAGE_TITLE_HEADING,
8681
HtmlStyle.title, titleContent);
8782
Content headerDiv = HtmlTree.DIV(HtmlStyle.header, pHeading);
88-
Content footer = HtmlTree.FOOTER();
89-
navBar.setUserFooter(getUserHeaderFooter(false));
90-
footer.add(navBar.getContent(Navigation.Position.BOTTOM));
91-
addBottom(footer);
9283
HtmlTree bodyTree = getBody(getWindowTitle(label));
9384
bodyTree.add(new BodyContents()
94-
.setHeader(headerContent)
85+
.setHeader(getHeader(PageMode.ALL_PACKAGES))
9586
.addMainContent(headerDiv)
9687
.addMainContent(mainContent)
97-
.setFooter(footer));
88+
.setFooter(getFooter()));
9889
printHtmlDocument(null, "package index", bodyTree);
9990
}
10091

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassUseWriter.java

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,6 @@ public class ClassUseWriter extends SubWriterHolderWriter {
9494
final ConstructorWriterImpl constrSubWriter;
9595
final FieldWriterImpl fieldSubWriter;
9696
final NestedClassWriterImpl classSubWriter;
97-
private final Navigation navBar;
9897

9998
/**
10099
* Constructor.
@@ -147,7 +146,6 @@ public ClassUseWriter(HtmlConfiguration configuration,
147146
constrSubWriter.setFoundNonPubConstructor(true);
148147
fieldSubWriter = new FieldWriterImpl(this);
149148
classSubWriter = new NestedClassWriterImpl(this);
150-
this.navBar = new Navigation(typeElement, configuration, PageMode.USE, path);
151149
}
152150

153151
/**
@@ -227,11 +225,7 @@ protected void generateClassUseFile() throws DocFileIOException {
227225
utils.getFullyQualifiedName(typeElement)));
228226
}
229227
bodyContents.addMainContent(mainContent);
230-
HtmlTree footer = HtmlTree.FOOTER();
231-
navBar.setUserFooter(getUserHeaderFooter(false));
232-
footer.add(navBar.getContent(Navigation.Position.BOTTOM));
233-
addBottom(footer);
234-
bodyContents.setFooter(footer);
228+
bodyContents.setFooter(getFooter());
235229
body.add(bodyContents);
236230
String description = getDescription("use", typeElement);
237231
printHtmlDocument(null, description, body);
@@ -425,25 +419,26 @@ protected HtmlTree getClassUseHeader() {
425419
String title = resources.getText("doclet.Window_ClassUse_Header",
426420
cltype, clname);
427421
HtmlTree bodyTree = getBody(getWindowTitle(title));
428-
Content headerContent = new ContentBuilder();
429-
addTop(headerContent);
430-
Content mdleLinkContent = getModuleLink(utils.elementUtils.getModuleOf(typeElement),
431-
contents.moduleLabel);
432-
navBar.setNavLinkModule(mdleLinkContent);
433-
Content classLinkContent = getLink(new LinkInfoImpl(
434-
configuration, LinkInfoImpl.Kind.CLASS_USE_HEADER, typeElement)
435-
.label(resources.getText("doclet.Class")));
436-
navBar.setNavLinkClass(classLinkContent);
437-
navBar.setUserHeader(getUserHeaderFooter(true));
438-
headerContent.add(navBar.getContent(Navigation.Position.TOP));
439422
ContentBuilder headingContent = new ContentBuilder();
440423
headingContent.add(contents.getContent("doclet.ClassUse_Title", cltype));
441424
headingContent.add(new HtmlTree(TagName.BR));
442425
headingContent.add(clname);
443426
Content heading = HtmlTree.HEADING_TITLE(Headings.PAGE_TITLE_HEADING,
444427
HtmlStyle.title, headingContent);
445428
Content div = HtmlTree.DIV(HtmlStyle.header, heading);
446-
bodyContents.setHeader(headerContent).addMainContent(div);
429+
bodyContents.setHeader(getHeader(PageMode.USE, typeElement)).addMainContent(div);
447430
return bodyTree;
448431
}
432+
433+
@Override
434+
protected Navigation getNavBar(PageMode pageMode, Element element) {
435+
Content mdleLinkContent = getModuleLink(utils.elementUtils.getModuleOf(typeElement),
436+
contents.moduleLabel);
437+
Content classLinkContent = getLink(new LinkInfoImpl(
438+
configuration, LinkInfoImpl.Kind.CLASS_USE_HEADER, typeElement)
439+
.label(resources.getText("doclet.Class")));
440+
return super.getNavBar(pageMode, element)
441+
.setNavLinkModule(mdleLinkContent)
442+
.setNavLinkClass(classLinkContent);
443+
}
449444
}

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassWriterImpl.java

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,6 @@ public class ClassWriterImpl extends SubWriterHolderWriter implements ClassWrite
9090

9191
protected final ClassTree classtree;
9292

93-
private final Navigation navBar;
94-
9593
/**
9694
* @param configuration the configuration data for the doclet
9795
* @param typeElement the class being documented.
@@ -103,20 +101,11 @@ public ClassWriterImpl(HtmlConfiguration configuration, TypeElement typeElement,
103101
this.typeElement = typeElement;
104102
configuration.currentTypeElement = typeElement;
105103
this.classtree = classTree;
106-
this.navBar = new Navigation(typeElement, configuration, PageMode.CLASS, path);
107104
}
108105

109106
@Override
110107
public Content getHeader(String header) {
111108
HtmlTree bodyTree = getBody(getWindowTitle(utils.getSimpleName(typeElement)));
112-
Content headerContent = new ContentBuilder();
113-
addTop(headerContent);
114-
Content linkContent = getModuleLink(utils.elementUtils.getModuleOf(typeElement),
115-
contents.moduleLabel);
116-
navBar.setNavLinkModule(linkContent);
117-
navBar.setMemberSummaryBuilder(configuration.getBuilderFactory().getMemberSummaryBuilder(this));
118-
navBar.setUserHeader(getUserHeaderFooter(true));
119-
headerContent.add(navBar.getContent(Navigation.Position.TOP));
120109
HtmlTree div = new HtmlTree(TagName.DIV);
121110
div.setStyle(HtmlStyle.header);
122111
if (configuration.showModules) {
@@ -146,7 +135,7 @@ public Content getHeader(String header) {
146135
HtmlStyle.title, new StringContent(header));
147136
heading.add(getTypeParameterLinks(linkInfo));
148137
div.add(heading);
149-
bodyContents.setHeader(headerContent)
138+
bodyContents.setHeader(getHeader(PageMode.CLASS, typeElement))
150139
.addMainContent(MarkerComments.START_OF_CLASS_DATA)
151140
.addMainContent(div);
152141
return bodyTree;
@@ -157,14 +146,19 @@ public Content getClassContentHeader() {
157146
return getContentHeader();
158147
}
159148

149+
@Override
150+
protected Navigation getNavBar(PageMode pageMode, Element element) {
151+
Content linkContent = getModuleLink(utils.elementUtils.getModuleOf(element),
152+
contents.moduleLabel);
153+
return super.getNavBar(pageMode, element)
154+
.setNavLinkModule(linkContent)
155+
.setMemberSummaryBuilder(configuration.getBuilderFactory().getMemberSummaryBuilder(this));
156+
}
157+
160158
@Override
161159
public void addFooter() {
162160
bodyContents.addMainContent(MarkerComments.END_OF_CLASS_DATA);
163-
Content htmlTree = HtmlTree.FOOTER();
164-
navBar.setUserFooter(getUserHeaderFooter(false));
165-
htmlTree.add(navBar.getContent(Navigation.Position.BOTTOM));
166-
addBottom(htmlTree);
167-
bodyContents.setFooter(htmlTree);
161+
bodyContents.setFooter(getFooter());
168162
}
169163

170164
@Override

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstantsSummaryWriterImpl.java

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,6 @@ public class ConstantsSummaryWriterImpl extends HtmlDocletWriter implements Cons
7373
*/
7474
private HtmlTree summaryTree;
7575

76-
private final Navigation navBar;
77-
7876
private final BodyContents bodyContents = new BodyContents();
7977

8078
private boolean hasConstants = false;
@@ -88,19 +86,14 @@ public ConstantsSummaryWriterImpl(HtmlConfiguration configuration) {
8886
super(configuration, DocPaths.CONSTANT_VALUES);
8987
constantsTableHeader = new TableHeader(
9088
contents.modifierAndTypeLabel, contents.constantFieldLabel, contents.valueLabel);
91-
this.navBar = new Navigation(null, configuration, PageMode.CONSTANT_VALUES, path);
9289
configuration.conditionalPages.add(HtmlConfiguration.ConditionalPage.CONSTANT_VALUES);
9390
}
9491

9592
@Override
9693
public Content getHeader() {
9794
String label = resources.getText("doclet.Constants_Summary");
9895
HtmlTree bodyTree = getBody(getWindowTitle(label));
99-
Content headerContent = new ContentBuilder();
100-
addTop(headerContent);
101-
navBar.setUserHeader(getUserHeaderFooter(true));
102-
headerContent.add(navBar.getContent(Navigation.Position.TOP));
103-
bodyContents.setHeader(headerContent);
96+
bodyContents.setHeader(getHeader(PageMode.CONSTANT_VALUES));
10497
return bodyTree;
10598
}
10699

@@ -271,11 +264,7 @@ public void addConstantSummaries(Content summariesTree) {
271264

272265
@Override
273266
public void addFooter() {
274-
Content htmlTree = HtmlTree.FOOTER();
275-
navBar.setUserFooter(getUserHeaderFooter(false));
276-
htmlTree.add(navBar.getContent(Navigation.Position.BOTTOM));
277-
addBottom(htmlTree);
278-
bodyContents.setFooter(htmlTree);
267+
bodyContents.setFooter(getFooter());
279268
}
280269

281270
@Override

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

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -207,8 +207,6 @@ private String getHeaderKey(DeprElementKind kind) {
207207

208208
private EnumMap<DeprElementKind, AbstractMemberWriter> writerMap;
209209

210-
private final Navigation navBar;
211-
212210
/**
213211
* Constructor.
214212
*
@@ -218,7 +216,6 @@ private String getHeaderKey(DeprElementKind kind) {
218216

219217
public DeprecatedListWriter(HtmlConfiguration configuration, DocPath filename) {
220218
super(configuration, filename);
221-
this.navBar = new Navigation(null, configuration, PageMode.DEPRECATED, path);
222219
NestedClassWriterImpl classW = new NestedClassWriterImpl(this);
223220
writerMap = new EnumMap<>(DeprElementKind.class);
224221
for (DeprElementKind kind : DeprElementKind.values()) {
@@ -295,11 +292,7 @@ protected void generateDeprecatedListFile(DeprecatedAPIListBuilder deprAPI)
295292
}
296293
}
297294
bodyContents.addMainContent(content);
298-
HtmlTree htmlTree = HtmlTree.FOOTER();
299-
navBar.setUserFooter(getUserHeaderFooter(false));
300-
htmlTree.add(navBar.getContent(Navigation.Position.BOTTOM));
301-
addBottom(htmlTree);
302-
bodyContents.setFooter(htmlTree);
295+
bodyContents.setFooter(getFooter());
303296
String description = "deprecated elements";
304297
body.add(bodyContents);
305298
printHtmlDocument(null, description, body);
@@ -356,11 +349,7 @@ public Content getContentsList(DeprecatedAPIListBuilder deprapi) {
356349
public HtmlTree getHeader() {
357350
String title = resources.getText("doclet.Window_Deprecated_List");
358351
HtmlTree bodyTree = getBody(getWindowTitle(title));
359-
Content headerContent = new ContentBuilder();
360-
addTop(headerContent);
361-
navBar.setUserHeader(getUserHeaderFooter(true));
362-
headerContent.add(navBar.getContent(Navigation.Position.TOP));
363-
bodyContents.setHeader(headerContent);
352+
bodyContents.setHeader(getHeader(PageMode.DEPRECATED));
364353
return bodyTree;
365354
}
366355

0 commit comments

Comments
 (0)