8226765: Commentary on Javadoc comments
authorhannesw
Tue, 06 Aug 2019 20:39:48 +0200
changeset 58636 dbca9d2b4080
parent 58635 06d7236d6ef6
child 58637 d66bdf0e2dfe
8226765: Commentary on Javadoc comments Reviewed-by: jjg, rhalade, skoivu
src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/JavaScriptScanner.java
test/langtools/jdk/javadoc/tool/TestScriptInComment.java
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/JavaScriptScanner.java	Thu Jan 17 10:44:17 2019 -0500
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/JavaScriptScanner.java	Tue Aug 06 20:39:48 2019 +0200
@@ -61,34 +61,8 @@
     public Void visitAttribute(AttributeTree tree, Consumer<DocTreePath> f) {
         String name = tree.getName().toString().toLowerCase(Locale.ENGLISH);
         switch (name) {
-            // See https://www.w3.org/TR/html-markup/global-attributes.html#common.attrs.event-handler
-            case "onabort":  case "onblur":  case "oncanplay":  case "oncanplaythrough":
-            case "onchange":  case "onclick":  case "oncontextmenu":  case "ondblclick":
-            case "ondrag":  case "ondragend":  case "ondragenter":  case "ondragleave":
-            case "ondragover":  case "ondragstart":  case "ondrop":  case "ondurationchange":
-            case "onemptied":  case "onended":  case "onerror":  case "onfocus":  case "oninput":
-            case "oninvalid":  case "onkeydown":  case "onkeypress":  case "onkeyup":
-            case "onload":  case "onloadeddata":  case "onloadedmetadata":  case "onloadstart":
-            case "onmousedown":  case "onmousemove":  case "onmouseout":  case "onmouseover":
-            case "onmouseup":  case "onmousewheel":  case "onpause":  case "onplay":
-            case "onplaying":  case "onprogress":  case "onratechange":  case "onreadystatechange":
-            case "onreset":  case "onscroll":  case "onseeked":  case "onseeking":
-            case "onselect":  case "onshow":  case "onstalled":  case "onsubmit":  case "onsuspend":
-            case "ontimeupdate":  case "onvolumechange":  case "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.
-            // case "onchange":  case "onclick":   case "ondblclick":  case "onfocus":
-            // case "onkeydown":  case "onkeypress":  case "onkeyup":  case "onload":
-            // case "onmousedown":  case "onmousemove":  case "onmouseout":  case "onmouseover":
-            // case "onmouseup":  case "onreset":  case "onselect":  case "onsubmit":
-            case "onunload":
-                f.accept(getCurrentPath());
-                break;
-
-            // See https://www.w3.org/TR/html4/sgml/dtd.html
-            //     https://www.w3.org/TR/html5/
+            //     https://www.w3.org/TR/html52/fullindex.html#attributes-table
             // These are all the attributes that take a %URI or a valid URL potentially surrounded
             // by spaces
             case "action":  case "cite":  case "classid":  case "codebase":  case "data":
@@ -102,6 +76,14 @@
                     }
                 }
                 break;
+            // 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.
+            default:
+                if (name.startsWith("on")) {
+                    f.accept(getCurrentPath());
+                }
+                break;
         }
         return super.visitAttribute(tree, f);
     }
--- a/test/langtools/jdk/javadoc/tool/TestScriptInComment.java	Thu Jan 17 10:44:17 2019 -0500
+++ b/test/langtools/jdk/javadoc/tool/TestScriptInComment.java	Tue Aug 06 20:39:48 2019 +0200
@@ -23,7 +23,7 @@
 
 /**
  * @test
- * @bug 8138725
+ * @bug 8138725 8226765
  * @summary test --allow-script-in-comments
  * @modules jdk.javadoc/jdk.javadoc.internal.tool
  */
@@ -63,6 +63,10 @@
         WS("< script >#ALERT</script>", false, "-Xdoclint:none"), // script tag with invalid white space
         SP("<script src=\"file\"> #ALERT </script>", true), // script tag with an attribute
         ON("<a onclick='#ALERT'>x</a>", true), // event handler attribute
+        OME("<img alt='1' onmouseenter='#ALERT'>", true), // onmouseenter event handler attribute
+        OML("<img alt='1' onmouseleave='#ALERT'>", true), // onmouseleave event handler attribute
+        OFI("<a href='#' onfocusin='#ALERT'>x</a>", true), // onfocusin event handler attribute
+        OBE("<a onbogusevent='#ALERT'>x</a>", true), // bogus/future event handler attribute
         URI("<a href='javascript:#ALERT'>x</a>", true); // javascript URI
 
         /**