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