test/langtools/jdk/javadoc/doclet/testFramesNoFrames/TestFramesNoFrames.java
author jjg
Tue, 05 Mar 2019 10:35:29 -0800
changeset 54002 fb9541185457
parent 53562 0d9dee001667
permissions -rw-r--r--
8219946: Set class on body elements Reviewed-by: hannesw
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
     1
/*
53562
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
     2
 * Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
     4
 *
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
     7
 * published by the Free Software Foundation.
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
     8
 *
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    13
 * accompanied this code).
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    14
 *
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    18
 *
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    21
 * questions.
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    22
 */
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    23
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    24
/*
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    25
 * @test
52616
1a395165c09b 8184205: Captions on tabbed tables are squashed together
pmuthuswamy
parents: 50895
diff changeset
    26
 * @bug 8162353 8164747 8173707 8196202 8204303 8184205
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    27
 * @summary javadoc should provide a way to disable use of frames
53097
2e82ca64b25d 8215516: Move JavadocTester to a named package
jjg
parents: 52616
diff changeset
    28
 * @library /tools/lib ../../lib
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    29
 * @modules
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    30
 *      jdk.compiler/com.sun.tools.javac.api
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    31
 *      jdk.compiler/com.sun.tools.javac.main
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    32
 *      jdk.javadoc/jdk.javadoc.internal.tool
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    33
 * @build toolbox.ModuleBuilder toolbox.ToolBox
53097
2e82ca64b25d 8215516: Move JavadocTester to a named package
jjg
parents: 52616
diff changeset
    34
 * @build javadoc.tester.*
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    35
 * @run main TestFramesNoFrames
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    36
 */
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    37
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    38
import java.io.*;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    39
import java.lang.annotation.Annotation;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    40
import java.lang.reflect.InvocationTargetException;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    41
import java.lang.reflect.Method;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    42
import java.nio.file.*;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    43
import java.util.*;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    44
import java.util.stream.Collectors;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    45
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    46
import toolbox.ModuleBuilder;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    47
import toolbox.ToolBox;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    48
53097
2e82ca64b25d 8215516: Move JavadocTester to a named package
jjg
parents: 52616
diff changeset
    49
import javadoc.tester.JavadocTester;
2e82ca64b25d 8215516: Move JavadocTester to a named package
jjg
parents: 52616
diff changeset
    50
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    51
public class TestFramesNoFrames extends JavadocTester {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    52
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    53
    public static void main(String... args) throws Exception {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    54
        TestFramesNoFrames tester = new TestFramesNoFrames();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    55
        tester.generateSource();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    56
        tester.runTests();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    57
    }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    58
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    59
    ToolBox tb = new ToolBox();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    60
    Path gensrcModules = Paths.get("gensrc/modules");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    61
    Path gensrcPackages = Paths.get("gensrc/packages");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    62
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    63
    void generateSource() throws IOException {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    64
        String[] modules = { "", "m1", "m2", "m3" };
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    65
        String[] packages = { "p1", "p2", "p3" };
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    66
        String[] classes = { "C1", "C2", "C3" };
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    67
        for (String m: modules) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    68
            ModuleBuilder mb = m.equals("") ? null : new ModuleBuilder(tb, m);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    69
            for (String p: packages) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    70
                Path pkgRoot;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    71
                if (m.equals("")) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    72
                    pkgRoot = gensrcPackages;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    73
                } else {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    74
                    pkgRoot = gensrcModules.resolve(m);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    75
                    mb.exports(m + p);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    76
                }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    77
                for (String c: classes) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    78
                    tb.writeJavaFiles(pkgRoot,
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    79
                        "package " + (m + p) + ";\n"
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    80
                        + "/** class " + (m + p + c).toUpperCase() + ". */\n"
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    81
                        + "public class " + (m + p + c).toUpperCase() + " { }"
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    82
                    );
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    83
                }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    84
            }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    85
            if (!m.equals("")) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    86
                mb.write(gensrcModules);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    87
            }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    88
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    89
        tb.writeFile("overview.html",
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    90
                "<html><body>This is the overview file</body></html>");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    91
    }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    92
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    93
    enum FrameKind {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    94
        DEFAULT(),
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    95
        FRAMES("--frames"),
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    96
        NO_FRAMES("--no-frames");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    97
        FrameKind(String... opts) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    98
            this.opts = Arrays.asList(opts);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    99
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   100
        final List<String> opts;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   101
    }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   102
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   103
    enum OverviewKind {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   104
        DEFAULT(),
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   105
        OVERVIEW("-overview", "overview.html"),
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   106
        NO_OVERVIEW("-nooverview");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   107
        OverviewKind(String... opts) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   108
            this.opts = Arrays.asList(opts);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   109
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   110
        final List<String> opts;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   111
    }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   112
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   113
    enum HtmlKind {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   114
        HTML5("-html5");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   115
        HtmlKind(String... opts) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   116
            this.opts = Arrays.asList(opts);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   117
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   118
        final List<String> opts;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   119
    }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   120
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   121
    @Override
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   122
    public void runTests() throws Exception {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   123
        for (Method m : getClass().getDeclaredMethods()) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   124
            Annotation a = m.getAnnotation(Test.class);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   125
            if (a != null) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   126
                for (FrameKind fk : FrameKind.values()) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   127
                    for (OverviewKind ok : OverviewKind.values()) {
53562
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
   128
                        try {
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
   129
                            out.println("Running test " + m.getName() + " " + fk + " " + ok);
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
   130
                            Path base = Paths.get(m.getName() + "_" + fk + "_" + ok);
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
   131
                            Files.createDirectories(base);
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
   132
                            m.invoke(this, new Object[]{base, fk, ok});
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
   133
                        } catch (InvocationTargetException e) {
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
   134
                            Throwable cause = e.getCause();
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
   135
                            throw (cause instanceof Exception) ? ((Exception)cause) : e;
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   136
                        }
53562
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
   137
                        out.println();
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   138
                    }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   139
                }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   140
            }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   141
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   142
        printSummary();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   143
    }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   144
53562
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
   145
    void javadoc(Path outDir, FrameKind fKind, OverviewKind oKind, String... rest) {
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   146
        List<String> args = new ArrayList<>();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   147
        args.add("-d");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   148
        args.add(outDir.toString());
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   149
        args.addAll(fKind.opts);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   150
        args.addAll(oKind.opts);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   151
        args.addAll(Arrays.asList(rest));
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   152
        javadoc(args.toArray(new String[0]));
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   153
        checkExit(Exit.OK);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   154
    }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   155
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   156
    @Test
53562
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
   157
    public void testClass(Path base, FrameKind fKind, OverviewKind oKind) throws Exception {
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
   158
        javadoc(base, fKind, oKind, gensrcPackages.resolve("p1/P1C1.java").toString());
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   159
53562
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
   160
        new Checker(fKind, oKind)
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   161
            .classes("p1.P1C1")
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   162
            .check();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   163
    }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   164
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   165
    @Test
53562
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
   166
    public void testClasses(Path base, FrameKind fKind, OverviewKind oKind) throws IOException {
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
   167
        javadoc(base, fKind, oKind,
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   168
            gensrcPackages.resolve("p1/P1C1.java").toString(),
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   169
            gensrcPackages.resolve("p1/P1C2.java").toString(),
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   170
            gensrcPackages.resolve("p1/P1C3.java").toString());
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   171
53562
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
   172
        new Checker(fKind, oKind)
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   173
            .classes("p1.P1C1", "p1.P1C2", "p1.P1C3")
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   174
            .check();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   175
    }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   176
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   177
    @Test
53562
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
   178
    public void testPackage(Path base, FrameKind fKind, OverviewKind oKind) throws IOException {
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
   179
        javadoc(base, fKind, oKind,
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   180
            "-sourcepath", gensrcPackages.toString(),
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   181
            "p1");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   182
53562
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
   183
        new Checker(fKind, oKind)
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   184
            .classes("p1.P1C1", "p1.P1C2", "p1.P1C3")
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   185
            .check();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   186
    }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   187
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   188
    @Test
53562
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
   189
    public void testPackages(Path base, FrameKind fKind, OverviewKind oKind) throws IOException {
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
   190
        javadoc(base, fKind, oKind,
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   191
            "-sourcepath", gensrcPackages.toString(),
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   192
            "p1", "p2", "p3");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   193
53562
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
   194
        new Checker(fKind, oKind)
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   195
            .classes("p1.P1C1", "p1.P1C2", "p1.P1C3",
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   196
                    "p2.P2C1", "p2.P2C2", "p2.P2C3",
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   197
                    "p3.P3C1", "p3.P3C2", "p3.P3C3")
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   198
            .check();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   199
    }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   200
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   201
    @Test
53562
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
   202
    public void testModules(Path base, FrameKind fKind, OverviewKind oKind) throws IOException {
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
   203
        javadoc(base, fKind, oKind,
40599
be40838eb215 8164887: update tests to remove use of old-style options
jjg
parents: 40592
diff changeset
   204
            "--module-source-path", gensrcModules.toString(),
40508
74ef30d16fb9 8159305: Enhance the javadoc tool to support module related options
ksrini
parents: 40500
diff changeset
   205
            "--module", "m1,m2,m3");
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   206
53562
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
   207
        new Checker(fKind, oKind)
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   208
            .classes("m1/m1p1.M1P1C1", "m1/m1p1.M1P1C2", "m1/m1p1.M1P1C3",
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   209
                    "m2/m2p1.M2P1C1", "m2/m2p1.M2P1C2", "m2/m2p1.M2P1C3",
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   210
                    "m3/m3p1.M3P1C1", "m3/m3p1.M3P1C2", "m3/m3p1.M3P1C3")
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   211
            .check();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   212
    }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   213
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   214
    /**
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   215
     * Check the contents of the generated output, according to the
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   216
     * specified options.
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   217
     */
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   218
    class Checker {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   219
        private final FrameKind fKind;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   220
        private final OverviewKind oKind;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   221
        List<String> classes;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   222
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   223
        private boolean frames;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   224
        private boolean overview;
50293
edfb87b2520e 8196202: Javadoc should not generate frames by default
jjg
parents: 48759
diff changeset
   225
        private static final String framesWarning
edfb87b2520e 8196202: Javadoc should not generate frames by default
jjg
parents: 48759
diff changeset
   226
                = "javadoc: warning - You have specified to generate frames, by using the --frames option.\n"
edfb87b2520e 8196202: Javadoc should not generate frames by default
jjg
parents: 48759
diff changeset
   227
                + "The default is currently to not generate frames and the support for \n"
edfb87b2520e 8196202: Javadoc should not generate frames by default
jjg
parents: 48759
diff changeset
   228
                + "frames will be removed in a future release.\n"
edfb87b2520e 8196202: Javadoc should not generate frames by default
jjg
parents: 48759
diff changeset
   229
                + "To suppress this warning, remove the --frames option and avoid the use of frames.";
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   230
53562
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
   231
        Checker(FrameKind fKind, OverviewKind oKind) {
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   232
            this.fKind = fKind;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   233
            this.oKind = oKind;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   234
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   235
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   236
        Checker classes(String... classes) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   237
            this.classes = Arrays.asList(classes);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   238
            return this;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   239
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   240
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   241
        void check() throws IOException {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   242
            switch (fKind) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   243
                case FRAMES:
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   244
                    frames = true;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   245
                    break;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   246
50293
edfb87b2520e 8196202: Javadoc should not generate frames by default
jjg
parents: 48759
diff changeset
   247
                case DEFAULT:
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   248
                case NO_FRAMES:
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   249
                    frames = false;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   250
                    break;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   251
            }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   252
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   253
            switch (oKind) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   254
                case DEFAULT:
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   255
                    overview = (getPackageCount() > 1);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   256
                    break;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   257
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   258
                case OVERVIEW:
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   259
                    overview = true;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   260
                    break;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   261
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   262
                case NO_OVERVIEW:
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   263
                    overview = false;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   264
                    break;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   265
            }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   266
53562
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
   267
            out.println("Checker: " + fKind + " " + oKind
50434
505d944de3c5 8204303: Add redirect for overview-summary.html
jjg
parents: 50293
diff changeset
   268
                + ": frames:" + frames + " overview:" + overview);
505d944de3c5 8204303: Add redirect for overview-summary.html
jjg
parents: 50293
diff changeset
   269
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   270
            checkAllClassesFiles();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   271
            checkFrameFiles();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   272
            checkOverviewSummary();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   273
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   274
            checkIndex();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   275
            checkNavBar();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   276
            checkHelpDoc();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   277
50293
edfb87b2520e 8196202: Javadoc should not generate frames by default
jjg
parents: 48759
diff changeset
   278
            checkWarning();
edfb87b2520e 8196202: Javadoc should not generate frames by default
jjg
parents: 48759
diff changeset
   279
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   280
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   281
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   282
        private void checkAllClassesFiles() {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   283
            // these files are only generated in frames mode
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   284
            checkFiles(frames,
50895
83ed34655f59 8202959: Rearrange the top and bottom navigation bar in the javadoc generated pages
jjg
parents: 50434
diff changeset
   285
                    "allclasses-frame.html");
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   286
50895
83ed34655f59 8202959: Rearrange the top and bottom navigation bar in the javadoc generated pages
jjg
parents: 50434
diff changeset
   287
            checkFiles(false,
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   288
                    "allclasses.html");
40592
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
   289
50895
83ed34655f59 8202959: Rearrange the top and bottom navigation bar in the javadoc generated pages
jjg
parents: 50434
diff changeset
   290
            checkFiles(false,
83ed34655f59 8202959: Rearrange the top and bottom navigation bar in the javadoc generated pages
jjg
parents: 50434
diff changeset
   291
                    "allclasses-noframe.html");
83ed34655f59 8202959: Rearrange the top and bottom navigation bar in the javadoc generated pages
jjg
parents: 50434
diff changeset
   292
40592
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
   293
            if (frames) {
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
   294
                checkOutput("allclasses-frame.html", true,
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
   295
                        classes.stream()
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
   296
                            .map(c -> "title=\"class in " + packagePart(c) + "\" target=\"classFrame\">" + classPart(c) + "</a>")
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
   297
                            .toArray(String[]::new));
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
   298
            }
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   299
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   300
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   301
        private void checkFrameFiles() {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   302
            // these files are all only generated in frames mode
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   303
48759
ffa68af7da87 8195795: Organize output files by module/package, not just package
jjg
parents: 47216
diff changeset
   304
            // <module>/module-frame.html and <module>/module-type-frame.html files
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   305
            checkFiles(frames, classes.stream()
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   306
                .filter(c -> isInModule(c))
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   307
                .map(c -> modulePart(c))
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   308
                .flatMap(m -> Arrays.asList(
48759
ffa68af7da87 8195795: Organize output files by module/package, not just package
jjg
parents: 47216
diff changeset
   309
                        m + "/module-frame.html",
ffa68af7da87 8195795: Organize output files by module/package, not just package
jjg
parents: 47216
diff changeset
   310
                        m + "/module-type-frame.html").stream())
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   311
                .collect(Collectors.toSet()));
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   312
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   313
            // <package>/package-frame.html files
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   314
            checkFiles(frames, classes.stream()
48759
ffa68af7da87 8195795: Organize output files by module/package, not just package
jjg
parents: 47216
diff changeset
   315
                    .map(c -> (isInModule(c) ? (modulePart(c) + "/") : "")
ffa68af7da87 8195795: Organize output files by module/package, not just package
jjg
parents: 47216
diff changeset
   316
                                + packagePart(c)
ffa68af7da87 8195795: Organize output files by module/package, not just package
jjg
parents: 47216
diff changeset
   317
                                + "/package-frame.html")
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   318
                    .collect(Collectors.toSet()));
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   319
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   320
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   321
        private void checkHelpDoc() {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   322
            // the Help page only describes Frame/NoFrames in frames mode
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   323
            checkOutput("help-doc.html", frames,
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   324
                        "<h2>Frames/No Frames</h2>");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   325
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   326
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   327
        private void checkIndex() {
43578
640eb9781ce5 8173707: Javadoc generated pages should default to no-frames view
bpatel
parents: 40599
diff changeset
   328
            // the index.html page only contains frames and Javascript to default to no-frames view,
640eb9781ce5 8173707: Javadoc generated pages should default to no-frames view
bpatel
parents: 40599
diff changeset
   329
            // in frames mode
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   330
            checkOutput("index.html", frames,
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   331
                    "<iframe ",
43578
640eb9781ce5 8173707: Javadoc generated pages should default to no-frames view
bpatel
parents: 40599
diff changeset
   332
                    "</iframe>",
54002
fb9541185457 8219946: Set class on body elements
jjg
parents: 53562
diff changeset
   333
                    "<body class=\"frames\" onload=\"loadFrames()\">\n"
43578
640eb9781ce5 8173707: Javadoc generated pages should default to no-frames view
bpatel
parents: 40599
diff changeset
   334
                    + "<script type=\"text/javascript\">\n"
640eb9781ce5 8173707: Javadoc generated pages should default to no-frames view
bpatel
parents: 40599
diff changeset
   335
                    + "if (targetPage == \"\" || targetPage == \"undefined\")");
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   336
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   337
            // the index.html contains the overview if one
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   338
            // has been given, and not in frames mode
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   339
            checkOutput("index.html", !frames && oKind == OverviewKind.OVERVIEW,
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   340
                    "This is the overview file");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   341
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   342
            // the index.html file contains a summary table
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   343
            // if an overview was generated and not in frames mode
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   344
            checkOutput("index.html", !frames && overview,
52616
1a395165c09b 8184205: Captions on tabbed tables are squashed together
pmuthuswamy
parents: 50895
diff changeset
   345
                    "<div class=\"overviewSummary\">\n<table");
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   346
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   347
            // the index.html file contains a redirect if
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   348
            // no frames and no overview
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   349
            checkOutput("index.html", !frames && !overview,
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   350
                    "<meta http-equiv=\"Refresh\" content=\"0;",
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   351
                    "<script type=\"text/javascript\">window.location.replace(");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   352
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   353
            if (!frames && !overview) {
53562
0d9dee001667 8215577: Remove javadoc support for HTML 4
pmuthuswamy
parents: 53097
diff changeset
   354
                checkOutput("index.html", true,
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   355
                        "<noscript>\n<meta http-equiv=\"Refresh\" content=\"0;");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   356
            }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   357
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   358
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   359
        private void checkNavBar() {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   360
            // the files containing a navigation bar should only
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   361
            // contain FRAMES/NO-FRAMES links in frames mode
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   362
            List<String> navbarFiles = new ArrayList<>();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   363
            navbarFiles.addAll(classes.stream()
48759
ffa68af7da87 8195795: Organize output files by module/package, not just package
jjg
parents: 47216
diff changeset
   364
                    .map(c -> (isInModule(c) ? (modulePart(c) + "/") : "")
ffa68af7da87 8195795: Organize output files by module/package, not just package
jjg
parents: 47216
diff changeset
   365
                                + toHtml(packageClassPart(c)))
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   366
                    .collect(Collectors.toSet()));
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   367
            for (String f : navbarFiles) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   368
                checkOutput(f, frames,
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   369
                        "target=\"_top\">Frames</a>",
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   370
                        "target=\"_top\">No&nbsp;Frames</a>");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   371
            }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   372
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   373
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   374
        private void checkOverviewSummary() {
50434
505d944de3c5 8204303: Add redirect for overview-summary.html
jjg
parents: 50293
diff changeset
   375
            // To accommodate the historical behavior of generating
505d944de3c5 8204303: Add redirect for overview-summary.html
jjg
parents: 50293
diff changeset
   376
            // overview-summary.html in frames mode, the file
505d944de3c5 8204303: Add redirect for overview-summary.html
jjg
parents: 50293
diff changeset
   377
            // will still be generated in no-frames mode,
505d944de3c5 8204303: Add redirect for overview-summary.html
jjg
parents: 50293
diff changeset
   378
            // but will be a redirect to index.html
505d944de3c5 8204303: Add redirect for overview-summary.html
jjg
parents: 50293
diff changeset
   379
            checkFiles(overview,
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   380
                    "overview-summary.html");
50434
505d944de3c5 8204303: Add redirect for overview-summary.html
jjg
parents: 50293
diff changeset
   381
            if (overview) {
505d944de3c5 8204303: Add redirect for overview-summary.html
jjg
parents: 50293
diff changeset
   382
                checkOutput("overview-summary.html",  !frames,
505d944de3c5 8204303: Add redirect for overview-summary.html
jjg
parents: 50293
diff changeset
   383
                        "<link rel=\"canonical\" href=\"index.html\">",
505d944de3c5 8204303: Add redirect for overview-summary.html
jjg
parents: 50293
diff changeset
   384
                        "<script type=\"text/javascript\">window.location.replace('index.html')</script>",
505d944de3c5 8204303: Add redirect for overview-summary.html
jjg
parents: 50293
diff changeset
   385
                        "<meta http-equiv=\"Refresh\" content=\"0;index.html\">",
505d944de3c5 8204303: Add redirect for overview-summary.html
jjg
parents: 50293
diff changeset
   386
                        "<p><a href=\"index.html\">index.html</a></p>");
505d944de3c5 8204303: Add redirect for overview-summary.html
jjg
parents: 50293
diff changeset
   387
            }
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   388
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   389
50293
edfb87b2520e 8196202: Javadoc should not generate frames by default
jjg
parents: 48759
diff changeset
   390
        private void checkWarning() {
edfb87b2520e 8196202: Javadoc should not generate frames by default
jjg
parents: 48759
diff changeset
   391
            checkOutput(Output.OUT, frames, framesWarning);
edfb87b2520e 8196202: Javadoc should not generate frames by default
jjg
parents: 48759
diff changeset
   392
        }
edfb87b2520e 8196202: Javadoc should not generate frames by default
jjg
parents: 48759
diff changeset
   393
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   394
        private long getPackageCount() {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   395
            return this.classes.stream()
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   396
                .filter(name -> name.contains("."))
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   397
                .map(name -> name.substring(0, name.lastIndexOf(".")))
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   398
                .distinct()
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   399
                .count();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   400
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   401
40592
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
   402
        private String classPart(String className) {
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
   403
            int lastDot = className.lastIndexOf(".");
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
   404
            return className.substring(lastDot + 1);
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
   405
        }
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
   406
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   407
        private String packagePart(String className) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   408
            int slash = className.indexOf("/");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   409
            int lastDot = className.lastIndexOf(".");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   410
            return className.substring(slash + 1, lastDot);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   411
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   412
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   413
        private String packageClassPart(String className) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   414
            int slash = className.indexOf("/");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   415
            return className.substring(slash + 1);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   416
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   417
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   418
        private boolean isInModule(String className) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   419
            return className.contains("/");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   420
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   421
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   422
        private String modulePart(String className) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   423
            int slash = className.indexOf("/");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   424
            return className.substring(0, slash);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   425
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   426
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   427
        private String toHtml(String className) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   428
            return className.replace(".", "/") + ".html";
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   429
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   430
    }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   431
}