提交 3e6fc31b 编写于 作者: B bpatel

6786682: Javadoc HTML WCAG 2.0 accessibility issues in standard doclet - HTML...

6786682: Javadoc HTML WCAG 2.0 accessibility issues in standard doclet - HTML tag should have lang attribute
Reviewed-by: jjg
上级 929e5411
......@@ -493,4 +493,14 @@ public class ConfigurationImpl extends Configuration {
public Comparator<ProgramElementDoc> getMemberComparator() {
return null;
}
/**
* {@inheritDoc}
*/
public Locale getLocale() {
if (root instanceof com.sun.tools.javadoc.RootDocImpl)
return ((com.sun.tools.javadoc.RootDocImpl)root).getLocale();
else
return Locale.getDefault();
}
}
......@@ -85,7 +85,7 @@ public class HtmlWriter extends PrintWriter {
* Print &lt;HTML&gt; tag. Add a newline character at the end.
*/
public void html() {
println("<HTML>");
println("<HTML lang=\"" + configuration.getLocale().getLanguage() + "\">");
}
/**
......
......@@ -706,6 +706,11 @@ public abstract class Configuration {
new FileInputStream(new File(builderXMLPath));
}
/**
* Return the Locale for this document.
*/
public abstract Locale getLocale();
/**
* Return the comparator that will be used to sort member documentation.
* To no do any sorting, return null.
......
......@@ -142,7 +142,7 @@ public class SourceToHTMLConverter {
reader.close();
}
output = addLineNumbers(output.toString());
output.insert(0, getHeader());
output.insert(0, getHeader(configuration));
output.append(getFooter());
writeToFile(output.toString(), outputdir, cd.name(), configuration);
} catch (Exception e){
......@@ -192,10 +192,11 @@ public class SourceToHTMLConverter {
/**
* Get the header.
* @param configuration the Doclet configuration
* @return the header to the output file
*/
protected static String getHeader() {
StringBuffer result = new StringBuffer("<HTML>" + DocletConstants.NL);
protected static String getHeader(Configuration configuration) {
StringBuffer result = new StringBuffer("<HTML lang=\"" + configuration.getLocale().getLanguage() + "\">" + DocletConstants.NL);
result.append("<BODY BGCOLOR=\""+ BGCOLOR + "\">" + DocletConstants.NL);
result.append("<PRE>" + DocletConstants.NL);
return result.toString();
......
......@@ -36,6 +36,7 @@ import com.sun.tools.javac.code.Symbol;
import com.sun.tools.javac.util.List;
import com.sun.tools.javac.util.ListBuffer;
import com.sun.tools.javac.util.Position;
import java.util.Locale;
/**
* This class holds the information from one run of javadoc.
......@@ -351,4 +352,11 @@ public class RootDocImpl extends DocImpl implements RootDoc {
null :
SourcePositionImpl.make(path, Position.NOPOS, null);
}
/**
* Return the locale provided by the user or the default locale value.
*/
public Locale getLocale() {
return env.doclocale.locale;
}
}
/*
* Copyright 2009 Sun Microsystems, Inc. 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. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun in the LICENSE file that accompanied this code.
*
* 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
/*
* @test
* @bug 6786682
* @summary This test verifies the use of lang attribute by <HTML>.
* @author Bhavesh Patel
* @library ../lib/
* @build JavadocTester
* @build TestHtmlTag
* @run main TestHtmlTag
*/
import java.util.Locale;
public class TestHtmlTag extends JavadocTester {
private static final String BUG_ID = "6786682";
private static final String[][] TEST1 = {
{BUG_ID + FS + "pkg1" + FS + "C1.html", "<HTML lang=\"" + Locale.getDefault().getLanguage() + "\">"},
{BUG_ID + FS + "pkg1" + FS + "package-summary.html", "<HTML lang=\"" + Locale.getDefault().getLanguage() + "\">"}};
private static final String[][] NEGATED_TEST1 = {
{BUG_ID + FS + "pkg1" + FS + "C1.html", "<HTML>"}};
private static final String[][] TEST2 = {
{BUG_ID + FS + "pkg2" + FS + "C2.html", "<HTML lang=\"ja\">"},
{BUG_ID + FS + "pkg2" + FS + "package-summary.html", "<HTML lang=\"ja\">"}};
private static final String[][] NEGATED_TEST2 = {
{BUG_ID + FS + "pkg2" + FS + "C2.html", "<HTML>"}};
private static final String[][] TEST3 = {
{BUG_ID + FS + "pkg1" + FS + "C1.html", "<HTML lang=\"en\">"},
{BUG_ID + FS + "pkg1" + FS + "package-summary.html", "<HTML lang=\"en\">"}};
private static final String[][] NEGATED_TEST3 = {
{BUG_ID + FS + "pkg1" + FS + "C1.html", "<HTML>"}};
private static final String[] ARGS1 =
new String[] {
"-d", BUG_ID, "-sourcepath", SRC_DIR, "pkg1"};
private static final String[] ARGS2 =
new String[] {
"-locale", "ja", "-d", BUG_ID, "-sourcepath", SRC_DIR, "pkg2"};
private static final String[] ARGS3 =
new String[] {
"-locale", "en_US", "-d", BUG_ID, "-sourcepath", SRC_DIR, "pkg1"};
/**
* The entry point of the test.
* @param args the array of command line arguments.
*/
public static void main(String[] args) {
TestHtmlTag tester = new TestHtmlTag();
run(tester, ARGS1, TEST1, NEGATED_TEST1);
run(tester, ARGS2, TEST2, NEGATED_TEST2);
run(tester, ARGS3, TEST3, NEGATED_TEST3);
tester.printSummary();
}
/**
* {@inheritDoc}
*/
public String getBugId() {
return BUG_ID;
}
/**
* {@inheritDoc}
*/
public String getBugName() {
return getClass().getName();
}
}
/*
* Copyright 2009 Sun Microsystems, Inc. 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. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun in the LICENSE file that accompanied this code.
*
* 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package pkg1;
public class C1 {
public void method(int param1, int param2) {
}
}
/*
* Copyright 2009 Sun Microsystems, Inc. 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. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun in the LICENSE file that accompanied this code.
*
* 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package pkg2;
/**
* <B>Comments:</B> Class 2
*/
public class C2 {}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册