tor-browser

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

focus-invalid-uri-link.html (1872B)


      1 <!doctype html>
      2 <script src=/resources/testharness.js></script>
      3 <script src=/resources/testharnessreport.js></script>
      4 <script src=/resources/testdriver.js></script>
      5 <script src=/resources/testdriver-actions.js></script>
      6 <script src=/resources/testdriver-vendor.js></script>
      7 <script>
      8 function abs(uri) {
      9  return new URL(uri, window.location.href).href;
     10 }
     11 const CHILD_DOC = `
     12 <!doctype html>
     13 <script src="${abs("/resources/testdriver.js")}"></` + `script>
     14 <script src="${abs("/resources/testdriver-actions.js")}"></` + `script>
     15 <script src="${abs("/resources/testdriver-vendor.js")}"></` + `script>
     16 <script>
     17  test_driver.set_test_context(opener);
     18 </` + `script>
     19 
     20 <a href>To link or not to link</a>
     21 
     22 <script>
     23 onload = async function() {
     24  let link = document.querySelector("a");
     25  link.focus();
     26  let focused = document.activeElement == link;
     27  let clicked = new Promise(resolve => {
     28    link.addEventListener("click", resolve, { once: true });
     29  });
     30  const enterKey = '\\uE007';
     31  await test_driver.send_keys(link, enterKey);
     32  await clicked;
     33  test_driver.message_test({ testResult: true, focused, clicked: true });
     34 };
     35 </` + `script>
     36 `
     37 
     38 promise_test(async function(t) {
     39  await new Promise(resolve => {
     40    window.onload = resolve;
     41  })
     42 
     43  let messagePromise = new Promise(resolve => {
     44    addEventListener("message", function(msg) {
     45      if (msg.data.testResult) {
     46        resolve(msg);
     47      }
     48    });
     49  });
     50 
     51  let win = window.open("data:text/html," + escape(CHILD_DOC));
     52 
     53  assert_true(true, "Window opened");
     54  let message = await messagePromise;
     55  assert_true(true, "message: " + JSON.stringify(message));
     56 
     57  let { focused, clicked } = message.data;
     58  assert_true(focused, "Link should be focusable");
     59  assert_true(clicked, "Link should be keyboard activatable");
     60 
     61  win.close();
     62 }, "Link to invalid URI should be focusable and keyboard activatable");
     63 </script>