test_interactive_content_in_label.html (3441B)
1 <!DOCTYPE HTML> 2 <html> 3 <!-- 4 https://bugzilla.mozilla.org/show_bug.cgi?id=229925 5 --> 6 <head> 7 <title>Test for Bug 229925</title> 8 <script src="/tests/SimpleTest/SimpleTest.js"></script> 9 <script src="/tests/SimpleTest/EventUtils.js"></script> 10 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 11 </head> 12 <body> 13 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=229925">Mozilla Bug 229925</a> 14 <p id="display"></p> 15 <form action="#"> 16 <label> 17 <span id="text">label</span> 18 <input type="button" id="target" value="target"> 19 20 <a class="yes" href="#">a</a> 21 <audio class="yes" controls></audio> 22 <button class="yes">button</button> 23 <details class="yes">details</details> 24 <embed class="yes">embed</embed> 25 <iframe class="yes" src="data:text/plain," style="width: 16px; height: 16px;"></iframe> 26 <img class="yes" src="data:image/png," usemap="#map"> 27 <input class="yes" type="text" size="4"> 28 <keygen class="no"> 29 <label class="yes">label</label> 30 <object class="yes" usemap="#map">object</object> 31 <select class="yes"><option>select</option></select> 32 <textarea class="yes" cols="1" rows="1"></textarea> 33 <video class="yes" controls></video> 34 35 <!-- Tests related to shadow tree. --> 36 <div id="root1"> <!-- content will be added by script below. --> </div> 37 <button><div id="root2"> <!-- content will be added by script below. --> </div></button> 38 39 <a class="no">a</a> 40 <audio class="no"></audio> 41 <img class="no" src="data:image/png,"> 42 <input class="no" type="hidden"> 43 <object class="no">object</object> 44 <video class="no"></video> 45 46 <span class="no" tabindex="1">tabindex</span> 47 <audio class="no" tabindex="1"></audio> 48 <img class="no" src="data:image/png," tabindex="1"> 49 <input class="no" type="hidden" tabindex="1"> 50 <object class="no" tabindex="1">object</object> 51 <video class="no" tabindex="1"></video> 52 </label> 53 </form> 54 <script class="testbody" type="text/javascript"> 55 56 /** Test for Bug 229925 */ 57 58 var target = document.getElementById("target"); 59 60 var yes_nodes = Array.from(document.getElementsByClassName("yes")); 61 62 var root1 = document.getElementById("root1"); 63 root1.attachShadow({ mode: "open" }).innerHTML = "<button class=yes>button in shadow tree</button>"; 64 var root2 = document.getElementById("root2"); 65 root2.attachShadow({ mode: "open" }).innerHTML = "<div class=yes>text in shadow tree</div>"; 66 var yes_nodes_in_shadow_tree = 67 Array.from(root1.shadowRoot.querySelectorAll(".yes")).concat( 68 Array.from(root2.shadowRoot.querySelectorAll(".yes"))); 69 70 var no_nodes = Array.from(document.getElementsByClassName("no")); 71 72 var target_clicked = false; 73 target.addEventListener("click", function() { 74 target_clicked = true; 75 }); 76 77 var node; 78 for (node of yes_nodes) { 79 target_clicked = false; 80 node.click(); 81 is(target_clicked, false, "mouse click on interactive content " + node.nodeName + " shouldn't dispatch event to label target"); 82 } 83 84 for (node of yes_nodes_in_shadow_tree) { 85 target_clicked = false; 86 node.click(); 87 is(target_clicked, false, "mouse click on content in shadow tree " + node.nodeName + " shouldn't dispatch event to label target"); 88 } 89 90 for (node of no_nodes) { 91 target_clicked = false; 92 node.click(); 93 is(target_clicked, true, "mouse click on non interactive content " + node.nodeName + " should dispatch event to label target"); 94 } 95 96 </script> 97 </pre> 98 </body> 99 </html>