langtools/test/jdk/javadoc/doclet/testFramesNoFrames/TestFramesNoFrames.java
author jjg
Wed, 24 Aug 2016 15:40:35 -0700
changeset 40592 83e85c302cfc
parent 40508 74ef30d16fb9
child 40599 be40838eb215
permissions -rw-r--r--
8164747: allclasses-frame broken after JDK-8162353 Reviewed-by: bpatel
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
/*
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
     2
 * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
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
40592
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
    26
 * @bug 8162353 8164747
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
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    28
 * @library /tools/lib ../lib
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
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    34
 * @build JavadocTester
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
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    49
public class TestFramesNoFrames extends JavadocTester {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    50
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    51
    public static void main(String... args) throws Exception {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    52
        TestFramesNoFrames tester = new TestFramesNoFrames();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    53
        tester.generateSource();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    54
        tester.runTests();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    55
    }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    56
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    57
    ToolBox tb = new ToolBox();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    58
    Path gensrcModules = Paths.get("gensrc/modules");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    59
    Path gensrcPackages = Paths.get("gensrc/packages");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    60
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    61
    void generateSource() throws IOException {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    62
        String[] modules = { "", "m1", "m2", "m3" };
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    63
        String[] packages = { "p1", "p2", "p3" };
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    64
        String[] classes = { "C1", "C2", "C3" };
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    65
        for (String m: modules) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    66
            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
    67
            for (String p: packages) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    68
                Path pkgRoot;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    69
                if (m.equals("")) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    70
                    pkgRoot = gensrcPackages;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    71
                } else {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    72
                    pkgRoot = gensrcModules.resolve(m);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    73
                    mb.exports(m + p);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    74
                }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    75
                for (String c: classes) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    76
                    tb.writeJavaFiles(pkgRoot,
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    77
                        "package " + (m + p) + ";\n"
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    78
                        + "/** class " + (m + p + c).toUpperCase() + ". */\n"
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    79
                        + "public class " + (m + p + c).toUpperCase() + " { }"
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    80
                    );
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    81
                }
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
            if (!m.equals("")) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    84
                mb.write(gensrcModules);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    85
            }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    86
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    87
        tb.writeFile("overview.html",
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    88
                "<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
    89
    }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    90
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    91
    enum FrameKind {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    92
        DEFAULT(),
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    93
        FRAMES("--frames"),
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    94
        NO_FRAMES("--no-frames");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    95
        FrameKind(String... opts) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    96
            this.opts = Arrays.asList(opts);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    97
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
    98
        final List<String> 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
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   101
    enum OverviewKind {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   102
        DEFAULT(),
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   103
        OVERVIEW("-overview", "overview.html"),
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   104
        NO_OVERVIEW("-nooverview");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   105
        OverviewKind(String... opts) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   106
            this.opts = Arrays.asList(opts);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   107
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   108
        final List<String> 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
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   111
    enum HtmlKind {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   112
        HTML4("-html4"),
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   113
        HTML5("-html5");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   114
        HtmlKind(String... opts) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   115
            this.opts = Arrays.asList(opts);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   116
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   117
        final List<String> opts;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   118
    }
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
    @Override
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   121
    public void runTests() throws Exception {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   122
        for (Method m : getClass().getDeclaredMethods()) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   123
            Annotation a = m.getAnnotation(Test.class);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   124
            if (a != null) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   125
                for (FrameKind fk : FrameKind.values()) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   126
                    for (OverviewKind ok : OverviewKind.values()) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   127
                        for (HtmlKind hk : HtmlKind.values()) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   128
                            try {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   129
                                out.println("Running test " + m.getName() + " " + fk + " " + ok + " " + hk);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   130
                                Path base = Paths.get(m.getName() + "_" + fk + "_" + ok + "_" + hk);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   131
                                Files.createDirectories(base);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   132
                                m.invoke(this, new Object[]{base, fk, ok, hk});
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   133
                            } catch (InvocationTargetException e) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   134
                                Throwable cause = e.getCause();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   135
                                throw (cause instanceof Exception) ? ((Exception) cause) : e;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   136
                            }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   137
                            out.println();
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
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   143
        printSummary();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   144
    }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   145
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   146
    void javadoc(Path outDir, FrameKind fKind, OverviewKind oKind, HtmlKind hKind, String... rest) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   147
        List<String> args = new ArrayList<>();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   148
        args.add("-d");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   149
        args.add(outDir.toString());
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   150
        args.addAll(fKind.opts);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   151
        args.addAll(oKind.opts);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   152
        args.addAll(hKind.opts);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   153
        args.addAll(Arrays.asList(rest));
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   154
        javadoc(args.toArray(new String[0]));
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   155
        checkExit(Exit.OK);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   156
    }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   157
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   158
    @Test
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   159
    void testClass(Path base, FrameKind fKind, OverviewKind oKind, HtmlKind hKind) throws Exception {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   160
        javadoc(base, fKind, oKind, hKind,
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   161
            gensrcPackages.resolve("p1/P1C1.java").toString());
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   162
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   163
        new Checker(fKind, oKind, hKind)
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   164
            .classes("p1.P1C1")
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   165
            .check();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   166
    }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   167
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   168
    @Test
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   169
    void testClasses(Path base, FrameKind fKind, OverviewKind oKind, HtmlKind hKind) throws IOException {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   170
        javadoc(base, fKind, oKind, hKind,
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   171
            gensrcPackages.resolve("p1/P1C1.java").toString(),
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   172
            gensrcPackages.resolve("p1/P1C2.java").toString(),
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   173
            gensrcPackages.resolve("p1/P1C3.java").toString());
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   174
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   175
        new Checker(fKind, oKind, hKind)
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   176
            .classes("p1.P1C1", "p1.P1C2", "p1.P1C3")
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   177
            .check();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   178
    }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   179
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   180
    @Test
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   181
    void testPackage(Path base, FrameKind fKind, OverviewKind oKind, HtmlKind hKind) throws IOException {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   182
        javadoc(base, fKind, oKind, hKind,
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   183
            "-sourcepath", gensrcPackages.toString(),
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   184
            "p1");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   185
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   186
        new Checker(fKind, oKind, hKind)
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   187
            .classes("p1.P1C1", "p1.P1C2", "p1.P1C3")
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   188
            .check();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   189
    }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   190
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   191
    @Test
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   192
    void testPackages(Path base, FrameKind fKind, OverviewKind oKind, HtmlKind hKind) throws IOException {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   193
        javadoc(base, fKind, oKind, hKind,
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   194
            "-sourcepath", gensrcPackages.toString(),
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   195
            "p1", "p2", "p3");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   196
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   197
        new Checker(fKind, oKind, hKind)
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   198
            .classes("p1.P1C1", "p1.P1C2", "p1.P1C3",
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   199
                    "p2.P2C1", "p2.P2C2", "p2.P2C3",
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   200
                    "p3.P3C1", "p3.P3C2", "p3.P3C3")
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   201
            .check();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   202
    }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   203
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   204
    @Test
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   205
    void testModules(Path base, FrameKind fKind, OverviewKind oKind, HtmlKind hKind) throws IOException {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   206
        javadoc(base, fKind, oKind, hKind,
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   207
            "-modulesourcepath", gensrcModules.toString(),
40508
74ef30d16fb9 8159305: Enhance the javadoc tool to support module related options
ksrini
parents: 40500
diff changeset
   208
            "--module", "m1,m2,m3");
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   209
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   210
        new Checker(fKind, oKind, hKind)
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   211
            .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
   212
                    "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
   213
                    "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
   214
            .check();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   215
    }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   216
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
     * 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
   219
     * specified options.
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   220
     */
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   221
    class Checker {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   222
        private final FrameKind fKind;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   223
        private final OverviewKind oKind;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   224
        private final HtmlKind hKind;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   225
        List<String> classes;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   226
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   227
        private boolean frames;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   228
        private boolean overview;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   229
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   230
        Checker(FrameKind fKind, OverviewKind oKind, HtmlKind hKind) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   231
            this.fKind = fKind;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   232
            this.oKind = oKind;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   233
            this.hKind = hKind;
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 DEFAULT:
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   244
                case FRAMES:
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   245
                    frames = true;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   246
                    break;
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   247
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
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   267
            checkAllClassesFiles();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   268
            checkFrameFiles();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   269
            checkOverviewSummary();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   270
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   271
            checkIndex();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   272
            checkNavBar();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   273
            checkHelpDoc();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   274
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   275
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   276
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   277
        private void checkAllClassesFiles() {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   278
            // these files are only generated in frames mode
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   279
            checkFiles(frames,
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   280
                    "allclasses-frame.html",
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   281
                    "allclasses-noframe.html");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   282
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   283
            // this file is only generated when not in frames mode
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   284
            checkFiles(!frames,
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   285
                    "allclasses.html");
40592
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
   286
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
   287
            if (frames) {
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
   288
                checkOutput("allclasses-frame.html", true,
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
   289
                        classes.stream()
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
   290
                            .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
   291
                            .toArray(String[]::new));
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
   292
                checkOutput("allclasses-noframe.html", false,
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
   293
                            "target=\"classFrame\">");
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
   294
            } else {
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
   295
                checkOutput("allclasses.html", false,
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
   296
                            "target=\"classFrame\">");
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
   297
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
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   304
            // <module>-frame.html and <module>-type-frame.html files
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(
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   309
                        m + "-frame.html",
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   310
                        m + "-type-frame.html").stream())
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()
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   315
                    .map(c -> packagePart(c) + "/package-frame.html")
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   316
                    .collect(Collectors.toSet()));
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   317
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   318
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   319
        private void checkHelpDoc() {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   320
            // 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
   321
            checkOutput("help-doc.html", frames,
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   322
                        "<h2>Frames/No Frames</h2>");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   323
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   324
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   325
        private void checkIndex() {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   326
            // the index.html page only contains frames in frames mode
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   327
            checkOutput("index.html", frames,
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   328
                    "<iframe ",
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   329
                    "</iframe>");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   330
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   331
            // the index.html contains the overview if one
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   332
            // has been given, and not in frames mode
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   333
            checkOutput("index.html", !frames && oKind == OverviewKind.OVERVIEW,
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   334
                    "This is the overview file");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   335
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   336
            // the index.html file contains a summary table
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   337
            // 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
   338
            checkOutput("index.html", !frames && overview,
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   339
                    "<table class=\"overviewSummary\"");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   340
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   341
            // the index.html file contains a redirect if
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   342
            // no frames and no overview
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   343
            checkOutput("index.html", !frames && !overview,
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   344
                    "<meta http-equiv=\"Refresh\" content=\"0;",
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   345
                    "<script type=\"text/javascript\">window.location.replace(");
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 <meta> refresh should only use <noscript> in HTML 5
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   348
            if (!frames && !overview) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   349
                checkOutput("index.html", hKind == HtmlKind.HTML5,
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   350
                        "<noscript>\n<meta http-equiv=\"Refresh\" content=\"0;");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   351
            }
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
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   354
        private void checkNavBar() {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   355
            // the files containing a navigation bar should only
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   356
            // contain FRAMES/NO-FRAMES links in frames mode
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   357
            List<String> navbarFiles = new ArrayList<>();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   358
            navbarFiles.addAll(classes.stream()
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   359
                    .map(c -> toHtml(packageClassPart(c)))
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   360
                    .collect(Collectors.toSet()));
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   361
            for (String f : navbarFiles) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   362
                checkOutput(f, frames,
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   363
                        "target=\"_top\">Frames</a>",
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   364
                        "target=\"_top\">No&nbsp;Frames</a>");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   365
            }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   366
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   367
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   368
        private void checkOverviewSummary() {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   369
            // the overview-summary.html file only appears if
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   370
            // in frames mode and (overview requested or multiple packages)
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   371
            checkFiles(frames && overview,
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   372
                    "overview-summary.html");
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
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   375
        private long getPackageCount() {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   376
            return this.classes.stream()
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   377
                .filter(name -> name.contains("."))
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   378
                .map(name -> name.substring(0, name.lastIndexOf(".")))
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   379
                .distinct()
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   380
                .count();
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   381
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   382
40592
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
   383
        private String classPart(String className) {
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
   384
            int lastDot = className.lastIndexOf(".");
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
   385
            return className.substring(lastDot + 1);
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
   386
        }
83e85c302cfc 8164747: allclasses-frame broken after JDK-8162353
jjg
parents: 40508
diff changeset
   387
40500
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   388
        private String packagePart(String className) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   389
            int slash = className.indexOf("/");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   390
            int lastDot = className.lastIndexOf(".");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   391
            return className.substring(slash + 1, lastDot);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   392
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   393
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   394
        private String packageClassPart(String className) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   395
            int slash = className.indexOf("/");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   396
            return className.substring(slash + 1);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   397
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   398
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   399
        private boolean isInModule(String className) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   400
            return className.contains("/");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   401
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   402
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   403
        private String modulePart(String className) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   404
            int slash = className.indexOf("/");
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   405
            return className.substring(0, slash);
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   406
        }
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   407
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   408
        private String toHtml(String className) {
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   409
            return className.replace(".", "/") + ".html";
f293dbb81a53 8162353: javadoc should provide a way to disable use of frames
jjg
parents:
diff changeset
   410
        }
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
}