# HG changeset patch # User igerasim # Date 1565641463 25200 # Node ID 735048c9f2d6835b76a436beffd29565f28a2a36 # Parent 090e85a30eb6f6b19239b621027b65c4261e46a5 8226765: Commentary on Javadoc comments Reviewed-by: jjg, rhalade, skoivu diff -r 090e85a30eb6 -r 735048c9f2d6 src/share/classes/com/sun/tools/javadoc/JavaScriptScanner.java --- a/src/share/classes/com/sun/tools/javadoc/JavaScriptScanner.java Thu Sep 26 07:17:41 2019 +0100 +++ b/src/share/classes/com/sun/tools/javadoc/JavaScriptScanner.java Mon Aug 12 13:24:23 2019 -0700 @@ -68,12 +68,10 @@ private boolean newline = true; Map tagParsers; - Set eventAttrs; Set uriAttrs; public JavaScriptScanner() { initTagParsers(); - initEventAttrs(); initURIAttrs(); } @@ -100,7 +98,11 @@ private void checkHtmlAttr(String name, String value) { String n = name.toLowerCase(Locale.ENGLISH); - if (eventAttrs.contains(n) + // https://www.w3.org/TR/html52/fullindex.html#attributes-table + // See https://www.w3.org/TR/html52/webappapis.html#events-event-handlers + // An event handler has a name, which always starts with "on" and is followed by + // the name of the event for which it is intended. + if (n.startsWith("on") || uriAttrs.contains(n) && value != null && value.toLowerCase(Locale.ENGLISH).trim().startsWith("javascript:")) { reporter.report(); @@ -1060,34 +1062,6 @@ } - private void initEventAttrs() { - eventAttrs = new HashSet<>(Arrays.asList( - // See https://www.w3.org/TR/html-markup/global-attributes.html#common.attrs.event-handler - "onabort", "onblur", "oncanplay", "oncanplaythrough", - "onchange", "onclick", "oncontextmenu", "ondblclick", - "ondrag", "ondragend", "ondragenter", "ondragleave", - "ondragover", "ondragstart", "ondrop", "ondurationchange", - "onemptied", "onended", "onerror", "onfocus", "oninput", - "oninvalid", "onkeydown", "onkeypress", "onkeyup", - "onload", "onloadeddata", "onloadedmetadata", "onloadstart", - "onmousedown", "onmousemove", "onmouseout", "onmouseover", - "onmouseup", "onmousewheel", "onpause", "onplay", - "onplaying", "onprogress", "onratechange", "onreadystatechange", - "onreset", "onscroll", "onseeked", "onseeking", - "onselect", "onshow", "onstalled", "onsubmit", "onsuspend", - "ontimeupdate", "onvolumechange", "onwaiting", - - // See https://www.w3.org/TR/html4/sgml/dtd.html - // Most of the attributes that take a %Script are also defined as event handlers - // in HTML 5. The one exception is onunload. - // "onchange", "onclick", "ondblclick", "onfocus", - // "onkeydown", "onkeypress", "onkeyup", "onload", - // "onmousedown", "onmousemove", "onmouseout", "onmouseover", - // "onmouseup", "onreset", "onselect", "onsubmit", - "onunload" - )); - } - private void initURIAttrs() { uriAttrs = new HashSet<>(Arrays.asList( // See https://www.w3.org/TR/html4/sgml/dtd.html diff -r 090e85a30eb6 -r 735048c9f2d6 test/tools/javadoc/TestScriptInComment.java --- a/test/tools/javadoc/TestScriptInComment.java Thu Sep 26 07:17:41 2019 +0100 +++ b/test/tools/javadoc/TestScriptInComment.java Mon Aug 12 13:24:23 2019 -0700 @@ -25,7 +25,7 @@ /** * @test - * @bug 8138725 + * @bug 8138725 8226765 * @summary test --allow-script-in-comments * @run main TestScriptInComment */ @@ -65,6 +65,10 @@ WS("< script >#ALERT", false, "-Xdoclint:none"), // script tag with invalid white space SA("", true), // script tag with an attribute ON("x", true), // event handler attribute + OME("1", true), // onmouseenter event handler attribute + OML("1", true), // onmouseleave event handler attribute + OFI("x", true), // onfocusin event handler attribute + OBE("x", true), // bogus/future event handler attribute URI("x", true); // javadcript URI /**