tor-browser

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

focus-without-user-activation-disabled-by-permissions-policy.https.sub.html (1934B)


      1 <!DOCTYPE html>
      2 <title>Focus without user activation container policy test</title>
      3 
      4 <body>
      5  <script src="./resources/common.js"></script>
      6  <script src="/resources/testharness.js"></script>
      7  <script src="/resources/testharnessreport.js"></script>
      8  <script src="/resources/testdriver.js"></script>
      9  <script src="/resources/testdriver-vendor.js"></script>
     10  <script src="/permissions-policy/resources/permissions-policy.js"></script>
     11  <div id="log"></div>
     12  <input id="before" />
     13 
     14  <script>
     15    var same_origin_src = '/permissions-policy/experimental-features/resources/permissions-policy-focus-without-user-activation-tab-focus.html';
     16    var cross_origin_src = 'https://{{domains[www]}}:{{ports[https][0]}}' +
     17      same_origin_src;
     18    const header = 'permissions policy "focus-without-user-activation" set to "none"';
     19 
     20    const tab_key = "\uE004";
     21    const before = document.getElementById("before");
     22 
     23    function subframe_focused() {
     24      return new Promise((resolve, reject) => {
     25        function tick() {
     26          if (document.getElementById("log").innerHTML === "iframe focused") {
     27            resolve();
     28          } else {
     29            requestAnimationFrame(tick.bind(this));
     30          }
     31        }
     32        tick();
     33      });
     34    }
     35 
     36    window.onmessage = m => {
     37      document.getElementById("log").innerHTML = m.data;
     38    };
     39 
     40    promise_test(async function (t) {
     41      const iframe = createIframe(document.body, {
     42        src: same_origin_src,
     43        allow: "focus-without-user-activation none"
     44      });
     45      await wait_for_load(iframe);
     46 
     47      before.focus();
     48      assert_equals(document.activeElement, before, "#before got outer focus");
     49 
     50      await test_driver.send_keys(document.activeElement, tab_key);
     51      await subframe_focused();
     52      t.add_cleanup(() => {
     53        iframe.remove();
     54      });
     55    }, 'Tab focus from parent frame into same-origin iframe is allowed with ' + header);
     56  </script>
     57 </body>