tor-browser

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

change-focus-then-remove-during-intercept.html (1312B)


      1 <!doctype html>
      2 <script src="/resources/testharness.js"></script>
      3 <script src="/resources/testharnessreport.js"></script>
      4 <body>
      5 <script>
      6 promise_test(async t => {
      7  let intercept_resolve;
      8  navigation.addEventListener("navigate", e => {
      9    e.intercept({ handler: () => new Promise(resolve => intercept_resolve = resolve),
     10                  focusReset: "after-transition" });
     11  }, { once: true });
     12 
     13  const button = document.body.appendChild(document.createElement("button"));
     14  const button2 = document.body.appendChild(document.createElement("button"));
     15  button2.tabIndex = 0;
     16  t.add_cleanup(() => {
     17    button.remove();
     18    button2.remove();
     19  });
     20 
     21  assert_equals(document.activeElement, document.body, "Start on body");
     22  button.focus();
     23  assert_equals(document.activeElement, button, "focus() worked");
     24 
     25  const finished = navigation.navigate("#1").finished;
     26 
     27  document.body.onfocus = t.unreached_func("onfocus shouldn't fire due to focus reset");
     28  button.remove();
     29  assert_equals(document.activeElement, document.body, "Removing the element reset focus");
     30 
     31  intercept_resolve();
     32  await finished;
     33  assert_equals(document.activeElement, document.body, "Focus remains on document.body after promise fulfills");
     34  await new Promise(resolve => t.step_timeout(resolve, 10));
     35 }, "");
     36 </script>
     37 </body>