提交 f85c02c7 编写于 作者: C chegar

Merge

......@@ -312,7 +312,7 @@ public class HtmlWriter {
String scriptCode = "<!--" + DocletConstants.NL +
" try {" + DocletConstants.NL +
" if (location.href.indexOf('is-external=true') == -1) {" + DocletConstants.NL +
" parent.document.title=\"" + winTitle + "\";" + DocletConstants.NL +
" parent.document.title=\"" + escapeJavaScriptChars(winTitle) + "\";" + DocletConstants.NL +
" }" + DocletConstants.NL +
" }" + DocletConstants.NL +
" catch(err) {" + DocletConstants.NL +
......@@ -324,6 +324,53 @@ public class HtmlWriter {
return script;
}
/**
* Returns a String with escaped special JavaScript characters.
*
* @param s String that needs to be escaped
* @return a valid escaped JavaScript string
*/
private static String escapeJavaScriptChars(String s) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
switch (ch) {
case '\b':
sb.append("\\b");
break;
case '\t':
sb.append("\\t");
break;
case '\n':
sb.append("\\n");
break;
case '\f':
sb.append("\\f");
break;
case '\r':
sb.append("\\r");
break;
case '"':
sb.append("\\\"");
break;
case '\'':
sb.append("\\\'");
break;
case '\\':
sb.append("\\\\");
break;
default:
if (ch < 32 || ch >= 127) {
sb.append(String.format("\\u%04X", (int)ch));
} else {
sb.append(ch);
}
break;
}
}
return sb.toString();
}
/**
* Returns a content tree for the SCRIPT tag for the main page(index.html).
*
......
/*
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* @test
* @bug 8016675
* @summary Test for window title.
* @author Bhavesh Patel
* @library ../lib/
* @build JavadocTester TestWindowTitle
* @run main TestWindowTitle
*/
public class TestWindowTitle extends JavadocTester {
private static final String BUG_ID = "8016675";
private static final String WIN_TITLE =
"Testing \"Window 'Title'\" with a \\ backslash and a / " +
"forward slash and a \u00e8 unicode char also a tab and also a " +
"\t special character another \u0002 unicode)";
private static final String[][] TEST = {
{BUG_ID + FS + "overview-summary.html",
"parent.document.title=\"Overview (Testing \\\"Window \\\'Title\\\'\\\" " +
"with a \\\\ backslash and a / forward slash and a \\u00E8 unicode char " +
"also a tab and also a \\t special character another \\u0002 unicode))\";"
},
};
private static final String[][] NEG_TEST = {
{BUG_ID + FS + "overview-summary.html",
"parent.document.title=\"Overview (Testing \"Window \'Title\'\" " +
"with a \\ backslash and a / forward slash and a \u00E8 unicode char " +
"also a tab and also a \t special character another \u0002 unicode))\";"
},
};
private static final String[] ARGS = new String[]{
"-d", BUG_ID, "-windowtitle", WIN_TITLE, "-sourcepath", SRC_DIR, "p1", "p2"
};
/**
* The entry point of the test.
* @param args the array of command line arguments.
*/
public static void main(String[] args) {
TestWindowTitle tester = new TestWindowTitle();
run(tester, ARGS, TEST, NEG_TEST);
tester.printSummary();
}
/**
* {@inheritDoc}
*/
public String getBugId() {
return BUG_ID;
}
/**
* {@inheritDoc}
*/
public String getBugName() {
return getClass().getName();
}
}
/*
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package p1;
public class C1 {
}
/*
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package p2;
public class C2 {
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册