tor-browser

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

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>