TestModules.java revision 4098:0e63023ff978
1/* 2 * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24/* 25 * @test 26 * @bug 8154119 8154262 8156077 8157987 8154261 8154817 8135291 8155995 8162363 27 * 8168766 8168688 8162674 8160196 8175799 8174974 8176778 8177562 8175218 28 * @summary Test modules support in javadoc. 29 * @author bpatel 30 * @library ../lib 31 * @modules jdk.javadoc/jdk.javadoc.internal.tool 32 * @build JavadocTester 33 * @run main TestModules 34 */ 35public class TestModules extends JavadocTester { 36 37 public static void main(String... args) throws Exception { 38 TestModules tester = new TestModules(); 39 tester.runTests(); 40 } 41 42 /** 43 * Test generated module pages for HTML 4. 44 */ 45 @Test 46 void testHtml4() { 47 javadoc("-d", "out", "-use", 48 "-overview", testSrc("overview.html"), 49 "--module-source-path", testSrc, 50 "--module", "moduleA,moduleB", 51 "testpkgmdlA", "testpkgmdlB"); 52 checkExit(Exit.OK); 53 checkDescription(true); 54 checkNoDescription(false); 55 checkOverviewSummaryModules(); 56 checkModuleLink(); 57 checkModuleClickThroughLinks(); 58 checkModuleClickThrough(true); 59 checkModuleFilesAndLinks(true); 60 checkModulesInSearch(true); 61 checkOverviewFrame(true); 62 } 63 64 /** 65 * Test generated module pages for HTML 5. 66 */ 67 @Test 68 void testHtml5() { 69 javadoc("-d", "out-html5", "-html5", "-use", 70 "-overview", testSrc("overview.html"), 71 "--module-source-path", testSrc, 72 "--module", "moduleA,moduleB", 73 "testpkgmdlA", "testpkgmdlB"); 74 checkExit(Exit.OK); 75 checkHtml5Description(true); 76 checkHtml5NoDescription(false); 77 checkHtml5OverviewSummaryModules(); 78 checkModuleLink(); 79 checkModuleClickThroughLinks(); 80 checkModuleClickThrough(true); 81 checkModuleFilesAndLinks(true); 82 checkModulesInSearch(true); 83 checkOverviewFrame(true); 84 } 85 86 /** 87 * Test generated module pages for HTML 4 with -nocomment option. 88 */ 89 @Test 90 void testHtml4NoComment() { 91 javadoc("-d", "out-nocomment", "-nocomment", "-use", 92 "-overview", testSrc("overview.html"), 93 "--module-source-path", testSrc, 94 "--module", "moduleA,moduleB", 95 "testpkgmdlA", "testpkgmdlB"); 96 checkExit(Exit.OK); 97 checkDescription(false); 98 checkNoDescription(true); 99 checkModuleLink(); 100 checkModuleFilesAndLinks(true); 101 checkOverviewFrame(true); 102 } 103 104 /** 105 * Test generated module pages for HTML 5 with -nocomment option. 106 */ 107 @Test 108 void testHtml5NoComment() { 109 javadoc("-d", "out-html5-nocomment", "-nocomment", "-html5", "-use", 110 "-overview", testSrc("overview.html"), 111 "--module-source-path", testSrc, 112 "--module", "moduleA,moduleB", 113 "testpkgmdlA", "testpkgmdlB"); 114 checkExit(Exit.OK); 115 checkHtml5Description(false); 116 checkHtml5NoDescription(true); 117 checkModuleLink(); 118 checkModuleFilesAndLinks(true); 119 checkOverviewFrame(true); 120 } 121 122 /** 123 * Test generated pages, in an unnamed module, for HTML 4. 124 */ 125 @Test 126 void testHtml4UnnamedModule() { 127 javadoc("-d", "out-nomodule", "-use", 128 "-overview", testSrc("overview.html"), 129 "-sourcepath", testSrc, 130 "testpkgnomodule", "testpkgnomodule1"); 131 checkExit(Exit.OK); 132 checkOverviewSummaryPackages(); 133 checkModuleClickThrough(false); 134 checkModuleFilesAndLinks(false); 135 checkModulesInSearch(false); 136 checkOverviewFrame(false); 137 } 138 139 /** 140 * Test generated pages, in an unnamed module, for HTML 5. 141 */ 142 @Test 143 void testHtml5UnnamedModule() { 144 javadoc("-d", "out-html5-nomodule", "-html5", "-use", 145 "-overview", testSrc("overview.html"), 146 "-sourcepath", testSrc, 147 "testpkgnomodule", "testpkgnomodule1"); 148 checkExit(Exit.OK); 149 checkHtml5OverviewSummaryPackages(); 150 checkModuleFilesAndLinks(false); 151 checkModulesInSearch(false); 152 checkOverviewFrame(false); 153 } 154 155 /** 156 * Test generated module pages with javadoc tags. 157 */ 158 @Test 159 void testJDTagsInModules() { 160 javadoc("-d", "out-mdltags", "-author", "-version", 161 "-tag", "regular:a:Regular Tag:", 162 "-tag", "moduletag:s:Module Tag:", 163 "--module-source-path", testSrc, 164 "--module", "moduletags,moduleB", 165 "testpkgmdltags", "testpkgmdlB"); 166 checkExit(Exit.OK); 167 checkModuleTags(); 168 } 169 170 /** 171 * Test generated module summary page. 172 */ 173 @Test 174 void testModuleSummary() { 175 javadoc("-d", "out-moduleSummary", "-use", 176 "--module-source-path", testSrc, 177 "--module", "moduleA,moduleB", 178 "testpkgmdlA", "testpkgmdlB", "moduleB/testpkg2mdlB"); 179 checkExit(Exit.OK); 180 checkModuleSummary(); 181 checkNegatedModuleSummary(); 182 } 183 184 /** 185 * Test generated module summary page of an aggregating module. 186 */ 187 @Test 188 void testAggregatorModuleSummary() { 189 javadoc("-d", "out-aggregatorModuleSummary", "-use", 190 "--module-source-path", testSrc, 191 "--expand-requires", "transitive", 192 "--module", "moduleT"); 193 checkExit(Exit.OK); 194 checkAggregatorModuleSummary(); 195 } 196 197 /** 198 * Test generated module pages and pages with link to modules. 199 */ 200 @Test 201 void testModuleFilesAndLinks() { 202 javadoc("-d", "out-modulelinks", 203 "--module-source-path", testSrc, 204 "--module", "moduleA,moduleB", 205 "testpkgmdlA", "testpkgmdlB"); 206 checkExit(Exit.OK); 207 checkModuleFilesAndLinks(true); 208 checkOverviewFrame(true); 209 } 210 211 /** 212 * Test generated module pages for a deprecated module. 213 */ 214 @Test 215 void testModuleDeprecation() { 216 javadoc("-d", "out-moduledepr", 217 "-tag", "regular:a:Regular Tag:", 218 "-tag", "moduletag:s:Module Tag:", 219 "--module-source-path", testSrc, 220 "--module", "moduleA,moduleB,moduletags", 221 "testpkgmdlA", "testpkgmdlB", "testpkgmdltags"); 222 checkExit(Exit.OK); 223 checkModuleDeprecation(true); 224 } 225 226 /** 227 * Test annotations on modules. 228 */ 229 @Test 230 void testModuleAnnotation() { 231 javadoc("-d", "out-moduleanno", 232 "--module-source-path", testSrc, 233 "--module", "moduleA,moduleB", 234 "testpkgmdlA", "testpkgmdlB"); 235 checkExit(Exit.OK); 236 checkModuleAnnotation(); 237 } 238 239 /** 240 * Test module summary pages in "api" mode. 241 */ 242 @Test 243 void testApiMode() { 244 javadoc("-d", "out-api", "-use", "--show-module-contents=api", "-author", "-version", 245 "-tag", "regular:a:Regular Tag:", 246 "-tag", "moduletag:s:Module Tag:", 247 "--module-source-path", testSrc, 248 "--module", "moduleA,moduleB,moduleC,moduletags", 249 "testpkgmdlA", "moduleA/concealedpkgmdlA", "testpkgmdlB", "testpkg2mdlB", "testpkgmdlC", "testpkgmdltags"); 250 checkExit(Exit.OK); 251 checkModuleModeCommon(); 252 checkModuleModeApi(true); 253 checkModuleModeAll(false); 254 } 255 256 /** 257 * Test module summary pages in "all" mode. 258 */ 259 @Test 260 void testAllMode() { 261 javadoc("-d", "out-all", "-use", "--show-module-contents=all", "-author", "-version", 262 "-tag", "regular:a:Regular Tag:", 263 "-tag", "moduletag:s:Module Tag:", 264 "--module-source-path", testSrc, 265 "--module", "moduleA,moduleB,moduleC,moduletags", 266 "testpkgmdlA", "moduleA/concealedpkgmdlA", "testpkgmdlB", "testpkg2mdlB", "testpkgmdlC", "testpkgmdltags"); 267 checkExit(Exit.OK); 268 checkModuleModeCommon(); 269 checkModuleModeApi(false); 270 checkModuleModeAll(true); 271 } 272 273 void checkDescription(boolean found) { 274 checkOutput("moduleA-summary.html", found, 275 "<!-- ============ MODULE DESCRIPTION =========== -->\n" 276 + "<a name=\"module.description\">\n" 277 + "<!-- -->\n" 278 + "</a>\n" 279 + "<div class=\"block\">This is a test description for the moduleA module. Search " 280 + "phrase <a id=\"searchphrase\" class=\"searchTagResult\">search phrase</a>.</div>"); 281 checkOutput("moduleB-summary.html", found, 282 "<!-- ============ MODULE DESCRIPTION =========== -->\n" 283 + "<a name=\"module.description\">\n" 284 + "<!-- -->\n" 285 + "</a>\n" 286 + "<div class=\"block\">This is a test description for the moduleB module. Search " 287 + "word <a id=\"search_word\" class=\"searchTagResult\">search_word</a> with no description.</div>"); 288 checkOutput("overview-summary.html", found, 289 "</script>\n" 290 + "<div class=\"contentContainer\">\n" 291 + "<div class=\"block\">The overview summary page header.</div>\n" 292 + "</div>\n" 293 + "<div class=\"contentContainer\">\n" 294 + "<table class=\"overviewSummary\" summary=\"Module Summary table, listing modules, and an explanation\">\n" 295 + "<caption><span>Modules</span><span class=\"tabEnd\"> </span></caption>"); 296 checkOutput("overview-summary.html", false, 297 "</table>\n" 298 + "</div>\n" 299 + "<div class=\"contentContainer\">\n" 300 + "<div class=\"block\">The overview summary page header.</div>\n" 301 + "</div>\n" 302 + "<div class=\"contentContainer\">\n" 303 + "<table class=\"overviewSummary\" summary=\"Module Summary table, listing modules, and an explanation\">\n" 304 + "<caption><span>Modules</span><span class=\"tabEnd\"> </span></caption>"); 305 } 306 307 void checkNoDescription(boolean found) { 308 checkOutput("moduleA-summary.html", found, 309 "<div class=\"contentContainer\">\n" 310 + "<ul class=\"blockList\">\n" 311 + "<li class=\"blockList\">\n" 312 + "<ul class=\"blockList\">\n" 313 + "<li class=\"blockList\">\n" 314 + "<!-- ============ PACKAGES SUMMARY =========== -->"); 315 checkOutput("moduleB-summary.html", found, 316 "<div class=\"contentContainer\">\n" 317 + "<ul class=\"blockList\">\n" 318 + "<li class=\"blockList\">\n" 319 + "<ul class=\"blockList\">\n" 320 + "<li class=\"blockList\">\n" 321 + "<!-- ============ PACKAGES SUMMARY =========== -->"); 322 } 323 324 void checkHtml5Description(boolean found) { 325 checkOutput("moduleA-summary.html", found, 326 "<section role=\"region\">\n" 327 + "<div class=\"deprecatedContent\"><span class=\"deprecatedLabel\">Deprecated, for removal:" 328 + " This API element is subject to removal in a future version.</span>\n" 329 + "<div class=\"block\"><span class=\"deprecationComment\">This module is deprecated.</span></div>\n" 330 + "</div>\n" 331 + "<!-- ============ MODULE DESCRIPTION =========== -->\n" 332 + "<a id=\"module.description\">\n" 333 + "<!-- -->\n" 334 + "</a>\n" 335 + "<div class=\"block\">This is a test description for the moduleA module. Search " 336 + "phrase <a id=\"searchphrase\" class=\"searchTagResult\">search phrase</a>.</div>"); 337 checkOutput("moduleB-summary.html", found, 338 "<section role=\"region\">\n" 339 + "<!-- ============ MODULE DESCRIPTION =========== -->\n" 340 + "<a id=\"module.description\">\n" 341 + "<!-- -->\n" 342 + "</a>\n" 343 + "<div class=\"block\">This is a test description for the moduleB module. Search " 344 + "word <a id=\"search_word\" class=\"searchTagResult\">search_word</a> with no description.</div>"); 345 checkOutput("overview-summary.html", found, 346 "</nav>\n" 347 + "</header>\n" 348 + "<main role=\"main\">\n" 349 + "<div class=\"contentContainer\">\n" 350 + "<div class=\"block\">The overview summary page header.</div>\n" 351 + "</div>\n" 352 + "<div class=\"contentContainer\">\n" 353 + "<table class=\"overviewSummary\">\n" 354 + "<caption><span>Modules</span><span class=\"tabEnd\"> </span></caption>"); 355 checkOutput("overview-summary.html", false, 356 "</table>\n" 357 + "</div>\n" 358 + "</main>\n" 359 + "<main role=\"main\">\n" 360 + "<div class=\"contentContainer\">\n" 361 + "<div class=\"block\">The overview summary page header.</div>\n" 362 + "</div>\n" 363 + "<div class=\"contentContainer\">\n" 364 + "<table class=\"overviewSummary\">\n" 365 + "<caption><span>Modules</span><span class=\"tabEnd\"> </span></caption>"); 366 } 367 368 void checkHtml5NoDescription(boolean found) { 369 checkOutput("moduleA-summary.html", found, 370 "<div class=\"contentContainer\">\n" 371 + "<ul class=\"blockList\">\n" 372 + "<li class=\"blockList\">\n" 373 + "<ul class=\"blockList\">\n" 374 + "<li class=\"blockList\">\n" 375 + "<!-- ============ PACKAGES SUMMARY =========== -->"); 376 checkOutput("moduleB-summary.html", found, 377 "<div class=\"contentContainer\">\n" 378 + "<ul class=\"blockList\">\n" 379 + "<li class=\"blockList\">\n" 380 + "<ul class=\"blockList\">\n" 381 + "<li class=\"blockList\">\n" 382 + "<!-- ============ PACKAGES SUMMARY =========== -->"); 383 } 384 385 void checkModuleLink() { 386 checkOutput("overview-summary.html", true, 387 "<li>Module</li>"); 388 checkOutput("moduleA-summary.html", true, 389 "<li class=\"navBarCell1Rev\">Module</li>"); 390 checkOutput("moduleB-summary.html", true, 391 "<li class=\"navBarCell1Rev\">Module</li>"); 392 checkOutput("testpkgmdlA/class-use/TestClassInModuleA.html", true, 393 "<li><a href=\"../../moduleA-summary.html\">Module</a></li>"); 394 checkOutput("testpkgmdlB/package-summary.html", true, 395 "<li><a href=\"../moduleB-summary.html\">Module</a></li>"); 396 checkOutput("testpkgmdlB/TestClassInModuleB.html", true, 397 "<li><a href=\"../moduleB-summary.html\">Module</a></li>"); 398 checkOutput("testpkgmdlB/class-use/TestClassInModuleB.html", true, 399 "<li><a href=\"../../moduleB-summary.html\">Module</a></li>"); 400 } 401 402 void checkNoModuleLink() { 403 checkOutput("testpkgnomodule/package-summary.html", true, 404 "<ul class=\"navList\" title=\"Navigation\">\n" 405 + "<li><a href=\"../testpkgnomodule/package-summary.html\">Package</a></li>"); 406 checkOutput("testpkgnomodule/TestClassNoModule.html", true, 407 "<ul class=\"navList\" title=\"Navigation\">\n" 408 + "<li><a href=\"../testpkgnomodule/package-summary.html\">Package</a></li>"); 409 checkOutput("testpkgnomodule/class-use/TestClassNoModule.html", true, 410 "<ul class=\"navList\" title=\"Navigation\">\n" 411 + "<li><a href=\"../../testpkgnomodule/package-summary.html\">Package</a></li>"); 412 } 413 414 void checkModuleTags() { 415 checkOutput("moduletags-summary.html", true, 416 "Type Link: <a href=\"testpkgmdltags/TestClassInModuleTags.html\" title=\"class in " 417 + "testpkgmdltags\"><code>TestClassInModuleTags</code></a>.", 418 "Member Link: <a href=\"testpkgmdltags/TestClassInModuleTags.html#" 419 + "testMethod-java.lang.String-\"><code>testMethod(String)</code></a>.", 420 "Package Link: <a href=\"testpkgmdltags/package-summary.html\"><code>testpkgmdltags</code></a>.", 421 "<dt><span class=\"simpleTagLabel\">Since:</span></dt>\n" 422 + "<dd>JDK 9</dd>", 423 "<dt><span class=\"seeLabel\">See Also:</span></dt>\n" 424 + "<dd>\"Test see tag\", \n" 425 + "<a href=\"testpkgmdltags/TestClassInModuleTags.html\" title=\"class in testpkgmdltags\"><code>" 426 + "TestClassInModuleTags</code></a></dd>", 427 "<dt><span class=\"simpleTagLabel\">Regular Tag:</span></dt>\n" 428 + "<dd>Just a regular simple tag.</dd>", 429 "<dt><span class=\"simpleTagLabel\">Module Tag:</span></dt>\n" 430 + "<dd>Just a simple module tag.</dd>", 431 "<dt><span class=\"simpleTagLabel\">Version:</span></dt>\n" 432 + "<dd>1.0</dd>", 433 "<dt><span class=\"simpleTagLabel\">Author:</span></dt>\n" 434 + "<dd>Bhavesh Patel</dd>"); 435 checkOutput("testpkgmdltags/TestClassInModuleTags.html", false, 436 "<dt><span class=\"simpleTagLabel\">Module Tag:</span></dt>\n" 437 + "<dd>Just a simple module tag.</dd>"); 438 } 439 440 void checkOverviewSummaryModules() { 441 checkOutput("overview-summary.html", true, 442 "<table class=\"overviewSummary\" summary=\"Module Summary table, listing modules, and an explanation\">\n" 443 + "<caption><span>Modules</span><span class=\"tabEnd\"> </span></caption>\n" 444 + "<tr>\n" 445 + "<th class=\"colFirst\" scope=\"col\">Module</th>\n" 446 + "<th class=\"colLast\" scope=\"col\">Description</th>\n" 447 + "</tr>"); 448 checkOutput("overview-summary.html", false, 449 "<table class=\"overviewSummary\" summary=\"Packages table, listing packages, and an explanation\">\n" 450 + "<caption><span>Packages</span><span class=\"tabEnd\"> </span></caption>\n" 451 + "<tr>\n" 452 + "<th class=\"colFirst\" scope=\"col\">Package</th>\n" 453 + "<th class=\"colLast\" scope=\"col\">Description</th>\n" 454 + "</tr>"); 455 } 456 457 void checkOverviewSummaryPackages() { 458 checkOutput("overview-summary.html", false, 459 "<table class=\"overviewSummary\" summary=\"Module Summary table, listing modules, and an explanation\">\n" 460 + "<caption><span>Modules</span><span class=\"tabEnd\"> </span></caption>\n" 461 + "<tr>\n" 462 + "<th class=\"colFirst\" scope=\"col\">Module</th>\n" 463 + "<th class=\"colLast\" scope=\"col\">Description</th>\n" 464 + "</tr>", 465 "</table>\n" 466 + "</div>\n" 467 + "<div class=\"contentContainer\">\n" 468 + "<div class=\"block\">The overview summary page header.</div>\n" 469 + "</div>\n" 470 + "<div class=\"contentContainer\">\n" 471 + "<table class=\"overviewSummary\" summary=\"Packages table, listing packages, and an explanation\">\n" 472 + "<caption><span>Packages</span><span class=\"tabEnd\"> </span></caption>"); 473 checkOutput("overview-summary.html", true, 474 "<table class=\"overviewSummary\" summary=\"Packages table, listing packages, and an explanation\">\n" 475 + "<caption><span>Packages</span><span class=\"tabEnd\"> </span></caption>\n" 476 + "<tr>\n" 477 + "<th class=\"colFirst\" scope=\"col\">Package</th>\n" 478 + "<th class=\"colLast\" scope=\"col\">Description</th>\n" 479 + "</tr>", 480 "</script>\n" 481 + "<div class=\"contentContainer\">\n" 482 + "<div class=\"block\">The overview summary page header.</div>\n" 483 + "</div>\n" 484 + "<div class=\"contentContainer\">\n" 485 + "<table class=\"overviewSummary\" summary=\"Packages table, listing packages, and an explanation\">\n" 486 + "<caption><span>Packages</span><span class=\"tabEnd\"> </span></caption>"); 487 } 488 489 void checkHtml5OverviewSummaryModules() { 490 checkOutput("overview-summary.html", true, 491 "<table class=\"overviewSummary\">\n" 492 + "<caption><span>Modules</span><span class=\"tabEnd\"> </span></caption>\n" 493 + "<tr>\n" 494 + "<th class=\"colFirst\" scope=\"col\">Module</th>\n" 495 + "<th class=\"colLast\" scope=\"col\">Description</th>\n" 496 + "</tr>"); 497 checkOutput("overview-summary.html", false, 498 "<table class=\"overviewSummary\">\n" 499 + "<caption><span>Packages</span><span class=\"tabEnd\"> </span></caption>\n" 500 + "<tr>\n" 501 + "<th class=\"colFirst\" scope=\"col\">Package</th>\n" 502 + "<th class=\"colLast\" scope=\"col\">Description</th>\n" 503 + "</tr>"); 504 } 505 506 void checkHtml5OverviewSummaryPackages() { 507 checkOutput("overview-summary.html", false, 508 "<table class=\"overviewSummary\">\n" 509 + "<caption><span>Modules</span><span class=\"tabEnd\"> </span></caption>\n" 510 + "<tr>\n" 511 + "<th class=\"colFirst\" scope=\"col\">Module</th>\n" 512 + "<th class=\"colLast\" scope=\"col\">Description</th>\n" 513 + "</tr>", 514 "</table>\n" 515 + "</div>\n" 516 + "</main>\n" 517 + "<main role=\"main\">\n" 518 + "<div class=\"contentContainer\">\n" 519 + "<div class=\"block\">The overview summary page header.</div>\n" 520 + "</div>\n" 521 + "<div class=\"contentContainer\">\n" 522 + "<table class=\"overviewSummary\">\n" 523 + "<caption><span>Packages</span><span class=\"tabEnd\"> </span></caption>"); 524 checkOutput("overview-summary.html", true, 525 "<table class=\"overviewSummary\">\n" 526 + "<caption><span>Packages</span><span class=\"tabEnd\"> </span></caption>\n" 527 + "<tr>\n" 528 + "<th class=\"colFirst\" scope=\"col\">Package</th>\n" 529 + "<th class=\"colLast\" scope=\"col\">Description</th>\n" 530 + "</tr>", 531 "</script>\n" 532 + "</nav>\n" 533 + "</header>\n" 534 + "<main role=\"main\">\n" 535 + "<div class=\"contentContainer\">\n" 536 + "<div class=\"block\">The overview summary page header.</div>\n" 537 + "</div>\n" 538 + "<div class=\"contentContainer\">\n" 539 + "<table class=\"overviewSummary\">\n" 540 + "<caption><span>Packages</span><span class=\"tabEnd\"> </span></caption>"); 541 } 542 543 void checkModuleSummary() { 544 checkOutput("moduleA-summary.html", true, 545 "<ul class=\"subNavList\">\n" 546 + "<li>Module: </li>\n" 547 + "<li><a href=\"#module.description\">Description</a> | <a " 548 + "href=\"#modules.summary\">Modules</a> | <a href=\"#packages.summary\">" 549 + "Packages</a> | Services</li>\n" 550 + "</ul>", 551 "<!-- ============ MODULES SUMMARY =========== -->\n" 552 + "<a name=\"modules.summary\">\n" 553 + "<!-- -->\n" 554 + "</a>", 555 "<tr class=\"altColor\" id=\"i0\">\n" 556 + "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdlA/package-summary.html\">testpkgmdlA</a></th>\n" 557 + "<td class=\"colLast\"> </td>\n" 558 + "</tr>", 559 "<!-- ============ PACKAGES SUMMARY =========== -->\n" 560 + "<a name=\"packages.summary\">\n" 561 + "<!-- -->\n" 562 + "</a>", 563 "<tr class=\"altColor\">\n" 564 + "<td class=\"colFirst\">transitive</td>\n" 565 + "<th class=\"colSecond\" scope=\"row\"><a href=\"moduleB-summary.html\">moduleB</a></th>\n" 566 + "<td class=\"colLast\">\n" 567 + "<div class=\"block\">This is a test description for the moduleB module.</div>\n" 568 + "</td>\n" 569 + "</tr>"); 570 checkOutput("moduleB-summary.html", true, 571 "<li><a href=\"#module.description\">Description</a> | Modules | " 572 + "<a href=\"#packages.summary\">Packages</a> | <a href=\"#services.summary\">" 573 + "Services</a></li>", 574 "<!-- ============ PACKAGES SUMMARY =========== -->\n" 575 + "<a name=\"packages.summary\">\n" 576 + "<!-- -->\n" 577 + "</a>", 578 "<tr class=\"altColor\" id=\"i0\">\n" 579 + "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdlB/package-summary.html\">testpkgmdlB</a></th>\n" 580 + "<td class=\"colLast\"> </td>\n" 581 + "</tr>", 582 "<!-- ============ PACKAGES SUMMARY =========== -->\n" 583 + "<a name=\"packages.summary\">\n" 584 + "<!-- -->\n" 585 + "</a>", 586 "<!-- ============ SERVICES SUMMARY =========== -->\n" 587 + "<a name=\"services.summary\">\n" 588 + "<!-- -->\n" 589 + "</a>", 590 "<tr class=\"altColor\">\n" 591 + "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdlB/TestClassInModuleB.html\" title=\"class in testpkgmdlB\">TestClassInModuleB</a></th>\n" 592 + "<td class=\"colLast\">With a test description for uses. </td>\n" 593 + "</tr>", 594 "<tr class=\"altColor\">\n" 595 + "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkg2mdlB/TestInterface2InModuleB.html\" title=\"interface in testpkg2mdlB\">TestInterface2InModuleB</a></th>\n" 596 + "<td class=\"colLast\"> </td>\n" 597 + "</tr>", 598 "<caption><span>Opens</span><span class=\"tabEnd\"> </span></caption>\n" 599 + "<tr>\n" 600 + "<th class=\"colFirst\" scope=\"col\">Package</th>\n" 601 + "<th class=\"colLast\" scope=\"col\">Description</th>\n" 602 + "</tr>", 603 "<caption><span>Uses</span><span class=\"tabEnd\"> </span></caption>\n" 604 + "<tr>\n" 605 + "<th class=\"colFirst\" scope=\"col\">Type</th>\n" 606 + "<th class=\"colLast\" scope=\"col\">Description</th>\n" 607 + "</tr>", 608 "<caption><span>Provides</span><span class=\"tabEnd\"> </span></caption>\n" 609 + "<tr>\n" 610 + "<th class=\"colFirst\" scope=\"col\">Type</th>\n" 611 + "<th class=\"colLast\" scope=\"col\">Description</th>\n" 612 + "</tr>"); 613 } 614 615 void checkAggregatorModuleSummary() { 616 checkOutput("moduleT-summary.html", true, 617 "<div class=\"header\">\n" 618 + "<h1 title=\"Module\" class=\"title\">Module moduleT</h1>\n" 619 + "</div>", 620 "<div class=\"block\">This is a test description for the moduleT module. " 621 + "Search phrase <a id=\"searchphrase\" class=\"searchTagResult\">search phrase</a>. " 622 + "Make sure there are no exported packages.</div>", 623 "<tbody>\n" 624 + "<tr class=\"altColor\">\n" 625 + "<td class=\"colFirst\">transitive</td>\n" 626 + "<th class=\"colSecond\" scope=\"row\"><a href=\"moduleA-summary.html\">moduleA</a></th>\n" 627 + "<td class=\"colLast\">\n" 628 + "<div class=\"block\">This is a test description for the moduleA module.</div>\n" 629 + "</td>\n" 630 + "</tr>\n" 631 + "<tr class=\"rowColor\">\n" 632 + "<td class=\"colFirst\">transitive</td>\n" 633 + "<th class=\"colSecond\" scope=\"row\"><a href=\"moduleB-summary.html\">moduleB</a></th>\n" 634 + "<td class=\"colLast\">\n" 635 + "<div class=\"block\">This is a test description for the moduleB module.</div>\n" 636 + "</td>\n" 637 + "</tr>\n" 638 + "</tbody>"); 639 } 640 641 void checkNegatedModuleSummary() { 642 checkOutput("moduleA-summary.html", false, 643 "<!-- ============ SERVICES SUMMARY =========== -->\n" 644 + "<a name=\"services.summary\">\n" 645 + "<!-- -->\n" 646 + "</a>"); 647 } 648 649 void checkModuleClickThroughLinks() { 650 checkOutput("module-overview-frame.html", true, 651 "<li><a href=\"moduleA-frame.html\" target=\"packageListFrame\" " 652 + "onclick=\"updateModuleFrame('moduleA-type-frame.html','moduleA-summary.html');" 653 + "\">moduleA</a></li>", 654 "<li><a href=\"moduleB-frame.html\" target=\"packageListFrame\" " 655 + "onclick=\"updateModuleFrame('moduleB-type-frame.html','moduleB-summary.html');" 656 + "\">moduleB</a></li>"); 657 checkOutput("script.js", true, 658 "function updateModuleFrame(pFrame, cFrame)\n" 659 + "{\n" 660 + " top.packageFrame.location = pFrame;\n" 661 + " top.classFrame.location = cFrame;\n" 662 + "}"); 663 } 664 665 void checkModuleClickThrough(boolean found) { 666 checkFiles(found, 667 "moduleA-type-frame.html", 668 "moduleB-type-frame.html"); 669 } 670 671 void checkModuleFilesAndLinks(boolean found) { 672 checkFileAndOutput("testpkgmdlA/package-summary.html", found, 673 "<li><a href=\"../moduleA-summary.html\">Module</a></li>", 674 "<div class=\"subTitle\"><span class=\"moduleLabelInPackage\">Module</span> " 675 + "<a href=\"../moduleA-summary.html\">moduleA</a></div>"); 676 checkFileAndOutput("testpkgmdlA/TestClassInModuleA.html", found, 677 "<li><a href=\"../moduleA-summary.html\">Module</a></li>", 678 "<div class=\"subTitle\"><span class=\"moduleLabelInType\">Module</span> " 679 + "<a href=\"../moduleA-summary.html\">moduleA</a></div>"); 680 checkFileAndOutput("testpkgmdlB/AnnotationType.html", found, 681 "<div class=\"subTitle\"><span class=\"moduleLabelInType\">Module</span> " 682 + "<a href=\"../moduleB-summary.html\">moduleB</a></div>", 683 "<div class=\"subTitle\"><span class=\"packageLabelInType\">" 684 + "Package</span> <a href=\"../testpkgmdlB/package-summary.html\">testpkgmdlB</a></div>"); 685 checkFiles(found, 686 "moduleA-frame.html", 687 "moduleA-summary.html", 688 "module-overview-frame.html"); 689 } 690 691 void checkModulesInSearch(boolean found) { 692 checkOutput("index-all.html", found, 693 "<dl>\n" 694 + "<dt><a href=\"moduleA-summary.html\">moduleA</a> - module moduleA</dt>\n" 695 + "<dd>\n" 696 + "<div class=\"block\">This is a test description for the moduleA module.</div>\n" 697 + "</dd>\n" 698 + "<dt><a href=\"moduleB-summary.html\">moduleB</a> - module moduleB</dt>\n" 699 + "<dd>\n" 700 + "<div class=\"block\">This is a test description for the moduleB module.</div>\n" 701 + "</dd>\n" 702 + "</dl>", 703 "<dl>\n" 704 + "<dt><span class=\"searchTagLink\"><a href=\"moduleA-summary.html#searchphrase\">" 705 + "search phrase</a></span> - Search tag in moduleA</dt>\n" 706 + "<dd>with description</dd>\n" 707 + "<dt><span class=\"searchTagLink\"><a href=\"moduleB-summary.html#search_word\">" 708 + "search_word</a></span> - Search tag in moduleB</dt>\n" 709 + "<dd> </dd>\n" 710 + "</dl>"); 711 } 712 713 void checkModuleModeCommon() { 714 checkOutput("overview-summary.html", true, 715 "<th class=\"colFirst\" scope=\"row\"><a href=\"moduleA-summary.html\">moduleA</a></th>\n" 716 + "<td class=\"colLast\">\n" 717 + "<div class=\"block\">This is a test description for the moduleA module.</div>\n" 718 + "</td>", 719 "<th class=\"colFirst\" scope=\"row\"><a href=\"moduleB-summary.html\">moduleB</a></th>\n" 720 + "<td class=\"colLast\">\n" 721 + "<div class=\"block\">This is a test description for the moduleB module.</div>\n" 722 + "</td>", 723 "<th class=\"colFirst\" scope=\"row\"><a href=\"moduletags-summary.html\">moduletags</a></th>\n" 724 + "<td class=\"colLast\">\n" 725 + "<div class=\"block\">This is a test description for the moduleA module.<br>\n" 726 + " Type Link: <a href=\"testpkgmdltags/TestClassInModuleTags.html\" title=\"class in testpkgmdltags\"><code>TestClassInModuleTags</code></a>.<br>\n" 727 + " Member Link: <a href=\"testpkgmdltags/TestClassInModuleTags.html#testMethod-java.lang.String-\"><code>testMethod(String)</code></a>.<br>\n" 728 + " Package Link: <a href=\"testpkgmdltags/package-summary.html\"><code>testpkgmdltags</code></a>.<br></div>\n" 729 + "</td>"); 730 checkOutput("moduleA-summary.html", true, 731 "<li><a href=\"#module.description\">Description</a> | <a href=\"#modules.summary\">" 732 + "Modules</a> | <a href=\"#packages.summary\">Packages</a> | Services</li>", 733 "<table class=\"packagesSummary\" summary=\"Indirect Exports table, listing modules, and packages\">\n" 734 + "<caption><span>Indirect Exports</span><span class=\"tabEnd\"> </span></caption>", 735 "<table class=\"packagesSummary\" summary=\"Indirect Opens table, listing modules, and packages\">\n" 736 + "<caption><span>Indirect Opens</span><span class=\"tabEnd\"> </span></caption>\n" 737 + "<tr>\n" 738 + "<th class=\"colFirst\" scope=\"col\">From</th>\n" 739 + "<th class=\"colLast\" scope=\"col\">Packages</th>\n" 740 + "</tr>\n", 741 "<th class=\"colFirst\" scope=\"row\"><a href=\"moduleB-summary.html\">moduleB</a></th>\n" 742 + "<td class=\"colLast\"><a href=\"testpkgmdlB/package-summary.html\">testpkgmdlB</a></td>\n"); 743 checkOutput("moduleB-summary.html", true, 744 "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdlB/TestClassInModuleB.html\" title=\"class in testpkgmdlB\">TestClassInModuleB</a></th>\n" 745 + "<td class=\"colLast\">With a test description for uses. </td>"); 746 checkOutput("moduletags-summary.html", true, 747 "<li><a href=\"#module.description\">Description</a> | <a href=\"#modules.summary\">Modules" 748 + "</a> | <a href=\"#packages.summary\">Packages</a> | Services</li>", 749 "<table class=\"requiresSummary\" summary=\"Indirect Requires table, listing modules, and an explanation\">\n" 750 + "<caption><span>Indirect Requires</span><span class=\"tabEnd\"> </span></caption>", 751 "<td class=\"colFirst\">transitive</td>\n" 752 + "<th class=\"colSecond\" scope=\"row\"><a href=\"moduleB-summary.html\">moduleB</a></th>\n" 753 + "<td class=\"colLast\">\n" 754 + "<div class=\"block\">This is a test description for the moduleB module.</div>\n" 755 + "</td>", 756 "<table class=\"packagesSummary\" summary=\"Indirect Exports table, listing modules, and packages\">\n" 757 + "<caption><span>Indirect Exports</span><span class=\"tabEnd\"> </span></caption>", 758 "<td class=\"colFirst\">transitive static</td>\n" 759 + "<th class=\"colSecond\" scope=\"row\"><a href=\"moduleA-summary.html\">moduleA</a></th>\n" 760 + "<td class=\"colLast\">\n" 761 + "<div class=\"block\">This is a test description for the moduleA module.</div>\n" 762 + "</td>", 763 "<table class=\"requiresSummary\" summary=\"Requires table, listing modules, and an explanation\">\n" 764 + "<caption><span>Requires</span><span class=\"tabEnd\"> </span></caption>\n" 765 + "<tr>\n" 766 + "<th class=\"colFirst\" scope=\"col\">Modifier</th>\n" 767 + "<th class=\"colSecond\" scope=\"col\">Module</th>\n" 768 + "<th class=\"colLast\" scope=\"col\">Description</th>", 769 "<table class=\"requiresSummary\" summary=\"Indirect Requires table, listing modules, and an explanation\">\n" 770 + "<caption><span>Indirect Requires</span><span class=\"tabEnd\"> </span></caption>\n" 771 + "<tr>\n" 772 + "<th class=\"colFirst\" scope=\"col\">Modifier</th>\n" 773 + "<th class=\"colSecond\" scope=\"col\">Module</th>\n" 774 + "<th class=\"colLast\" scope=\"col\">Description</th>", 775 "<table class=\"packagesSummary\" summary=\"Indirect Opens table, listing modules, and packages\">\n" 776 + "<caption><span>Indirect Opens</span><span class=\"tabEnd\"> </span></caption>\n" 777 + "<tr>\n" 778 + "<th class=\"colFirst\" scope=\"col\">From</th>\n" 779 + "<th class=\"colLast\" scope=\"col\">Packages</th>\n" 780 + "</tr>\n", 781 "<th class=\"colFirst\" scope=\"row\"><a href=\"moduleB-summary.html\">moduleB</a></th>\n" 782 + "<td class=\"colLast\"><a href=\"testpkgmdlB/package-summary.html\">testpkgmdlB</a></td>\n"); 783 } 784 785 void checkModuleModeApi(boolean found) { 786 checkOutput("moduleA-summary.html", found, 787 "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdlA/package-summary.html\">testpkgmdlA</a></th>\n" 788 + "<td class=\"colLast\"> </td>"); 789 checkOutput("moduleB-summary.html", found, 790 "<li><a href=\"#module.description\">Description</a> | Modules | " 791 + "<a href=\"#packages.summary\">Packages</a> | <a href=\"#services.summary\">Services</a></li>", 792 "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdlB/package-summary.html\">testpkgmdlB</a></th>\n" 793 + "<td class=\"colLast\"> </td>", 794 "<table class=\"packagesSummary\" summary=\"Packages table, listing packages, and an explanation\">\n" 795 + "<caption><span>Opens</span><span class=\"tabEnd\"> </span></caption>\n" 796 + "<tr>\n" 797 + "<th class=\"colFirst\" scope=\"col\">Package</th>\n" 798 + "<th class=\"colLast\" scope=\"col\">Description</th>\n" 799 + "</tr>\n" 800 + "<tbody>\n" 801 + "<tr class=\"altColor\" id=\"i0\">\n" 802 + "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdlB/package-summary.html\">testpkgmdlB</a></th>\n" 803 + "<td class=\"colLast\"> </td>\n" 804 + "</tr>\n" 805 + "</tbody>\n" 806 + "</table>"); 807 checkOutput("moduletags-summary.html", found, 808 "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdltags/package-summary.html\">testpkgmdltags</a></th>\n" 809 + "<td class=\"colLast\"> </td>"); 810 } 811 812 void checkModuleModeAll(boolean found) { 813 checkOutput("moduleA-summary.html", found, 814 "<td class=\"colFirst\"> </td>\n" 815 + "<th class=\"colSecond\" scope=\"row\">java.base</th>\n" 816 + "<td class=\"colLast\"> </td>", 817 "<td class=\"colFirst\"> </td>\n" 818 + "<th class=\"colSecond\" scope=\"row\"><a href=\"moduleC-summary.html\">moduleC</a></th>\n" 819 + "<td class=\"colLast\">\n" 820 + "<div class=\"block\">This is a test description for the moduleC module.</div>\n" 821 + "</td>", 822 "<th class=\"colFirst\" scope=\"row\"><a href=\"moduleC-summary.html\">moduleC</a></th>\n" 823 + "<td class=\"colLast\"><a href=\"testpkgmdlC/package-summary.html\">testpkgmdlC</a></td>", 824 "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdlA/package-summary.html\">testpkgmdlA</a></th>\n" 825 + "<td class=\"colSecond\">All Modules</td>\n" 826 + "<td class=\"colLast\"> </td>", 827 "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Packages</span><span class=\"tabEnd\"> </span></span>" 828 + "<span id=\"t1\" class=\"tableTab\"><span><a href=\"javascript:showPkgs(1);\">Exports</a></span>" 829 + "<span class=\"tabEnd\"> </span></span><span id=\"t3\" class=\"tableTab\"><span><a href=\"javascript:showPkgs(4);\">" 830 + "Concealed</a></span><span class=\"tabEnd\"> </span></span></caption>", 831 "<th class=\"colFirst\" scope=\"row\"><a href=\"concealedpkgmdlA/package-summary.html\">concealedpkgmdlA</a></th>\n" 832 + "<td class=\"colSecond\">None</td>\n" 833 + "<td class=\"colLast\"> </td>"); 834 checkOutput("moduleB-summary.html", found, 835 "<li><a href=\"#module.description\">Description</a> | <a href=\"#modules.summary\">" 836 + "Modules</a> | <a href=\"#packages.summary\">Packages</a> | <a href=\"#services.summary\">Services</a></li>", 837 "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdlB/package-summary.html\">testpkgmdlB</a></th>\n" 838 + "<td class=\"colSecond\">All Modules</td>\n" 839 + "<td class=\"colLast\"> </td>", 840 "<td class=\"colFirst\"> </td>\n" 841 + "<th class=\"colSecond\" scope=\"row\">java.base</th>\n" 842 + "<td class=\"colLast\"> </td>", 843 "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdlB/TestClass2InModuleB.html\" title=\"class in testpkgmdlB\">TestClass2InModuleB</a></th>\n" 844 + "<td class=\"colLast\"> </td>", 845 "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkg2mdlB/TestInterface2InModuleB.html\" title=\"interface in testpkg2mdlB\">TestInterface2InModuleB</a></th>\n" 846 + "<td class=\"colLast\"> <br>(<span class=\"implementationLabel\">Implementation(s):</span> <a href=\"testpkgmdlB/TestClass2InModuleB.html\" " 847 + "title=\"class in testpkgmdlB\">TestClass2InModuleB</a>)</td>", 848 "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkg2mdlB/TestInterfaceInModuleB.html\" title=\"interface in testpkg2mdlB\">TestInterfaceInModuleB</a></th>\n" 849 + "<td class=\"colLast\"> <br>(<span class=\"implementationLabel\">Implementation(s):</span> <a href=\"testpkgmdlB/TestClassInModuleB.html\" " 850 + "title=\"class in testpkgmdlB\">TestClassInModuleB</a>)</td>", 851 "<caption><span id=\"t0\" class=\"activeTableTab\"><span>All Packages</span><span class=\"tabEnd\"> </span></span><span id=\"t1\" class=\"tableTab\"><span>" 852 + "<a href=\"javascript:showPkgs(1);\">Exports</a></span><span class=\"tabEnd\"> </span></span><span id=\"t2\" class=\"tableTab\"><span>" 853 + "<a href=\"javascript:showPkgs(2);\">Opens</a></span><span class=\"tabEnd\"> </span></span></caption>"); 854 checkOutput("moduleC-summary.html", found, 855 "<caption><span>Exports</span><span class=\"tabEnd\"> </span></caption>\n" 856 + "<tr>\n" 857 + "<th class=\"colFirst\" scope=\"col\">Package</th>\n" 858 + "<th class=\"colSecond\" scope=\"col\">Module</th>\n" 859 + "<th class=\"colLast\" scope=\"col\">Description</th>\n" 860 + "</tr>"); 861 checkOutput("moduletags-summary.html", found, 862 "<th class=\"colFirst\" scope=\"row\"><a href=\"testpkgmdltags/package-summary.html\">testpkgmdltags</a></th>\n" 863 + "<td class=\"colSecond\">All Modules</td>\n" 864 + "<td class=\"colLast\"> </td>"); 865 } 866 867 void checkModuleDeprecation(boolean found) { 868 checkOutput("moduleA-summary.html", found, 869 "<div class=\"deprecatedContent\"><span class=\"deprecatedLabel\">Deprecated, for removal:" 870 + " This API element is subject to removal in a future version.</span>\n" 871 + "<div class=\"block\"><span class=\"deprecationComment\">This module is deprecated.</span></div>\n" 872 + "</div>"); 873 checkOutput("deprecated-list.html", found, 874 "<ul>\n" 875 + "<li><a href=\"#forRemoval\">Deprecated For Removal</a></li>\n" 876 + "<li><a href=\"#module\">Deprecated Modules</a></li>\n" 877 + "</ul>", 878 "<tr class=\"altColor\">\n" 879 + "<th class=\"colFirst\" scope=\"row\"><a href=\"moduleA-summary.html\">moduleA</a></th>\n" 880 + "<td class=\"colLast\">\n" 881 + "<div class=\"block\"><span class=\"deprecationComment\">This module is deprecated.</span></div>\n" 882 + "</td>\n" 883 + "</tr>"); 884 checkOutput("moduleB-summary.html", !found, 885 "<div class=\"deprecatedContent\"><span class=\"deprecatedLabel\">Deprecated.</span>\n" 886 + "<div class=\"block\"><span class=\"deprecationComment\">This module is deprecated using just the javadoc tag.</span></div>"); 887 checkOutput("moduletags-summary.html", found, 888 "<p>@Deprecated\n" 889 + "</p>", 890 "<div class=\"deprecatedContent\"><span class=\"deprecatedLabel\">Deprecated.</span></div>"); 891 } 892 893 void checkModuleAnnotation() { 894 checkOutput("moduleB-summary.html", true, 895 "<p><a href=\"testpkgmdlB/AnnotationType.html\" title=\"annotation in testpkgmdlB\">@AnnotationType</a>(<a href=\"testpkgmdlB/AnnotationType.html#optional--\">optional</a>=\"Module Annotation\",\n" 896 + " <a href=\"testpkgmdlB/AnnotationType.html#required--\">required</a>=2016)\n" 897 + "</p>"); 898 checkOutput("moduleB-summary.html", false, 899 "@AnnotationTypeUndocumented"); 900 } 901 902 void checkOverviewFrame(boolean found) { 903 checkOutput("index.html", !found, 904 "<iframe src=\"overview-frame.html\" name=\"packageListFrame\" title=\"All Packages\"></iframe>"); 905 checkOutput("index.html", found, 906 "<iframe src=\"module-overview-frame.html\" name=\"packageListFrame\" title=\"All Modules\"></iframe>"); 907 } 908} 909