tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>