tor-browser

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

test_fullscreen_iframe.html (1927B)


      1 <!doctype html>
      2 <title>Test for bug 1938966</title>
      3 <script src="/tests/SimpleTest/SimpleTest.js"></script>
      4 <script src="/tests/SimpleTest/EventUtils.js"></script>
      5 <script src="fullscreen_helpers.js"></script>
      6 <link rel="stylesheet" href="/tests/SimpleTest/test.css">
      7 <script>
      8 
      9 let { ContentTaskUtils } = SpecialPowers.ChromeUtils.importESModule(
     10  "resource://testing-common/ContentTaskUtils.sys.mjs"
     11 );
     12 
     13 add_setup(async function () {
     14  SpecialPowers.pushPrefEnv({ set: [
     15    ["full-screen-api.transition-duration.enter", "0 0"],
     16    ["full-screen-api.transition-duration.leave", "0 0"],
     17    ["full-screen-api.allow-trusted-requests-only", false]],
     18  });
     19 });
     20 
     21 TEST_URLS.forEach(url => {
     22  add_task(async () => {
     23    info(`Test url: ${url}`);
     24 
     25    const iframe = document.createElement("iframe");
     26    iframe.allowFullscreen = true;
     27    iframe.src = url;
     28 
     29    const loadPromise = ContentTaskUtils.waitForEvent(iframe, "load");
     30    document.documentElement.appendChild(iframe);
     31    await loadPromise;
     32 
     33    const topBC = SpecialPowers.wrap(iframe.contentWindow).browsingContext;
     34    const middleBC = topBC.children[0];
     35    const innerBC = middleBC.children[0];
     36    const browsingContexts = [
     37      [topBC, "toplevel"],
     38      [middleBC, "middle"],
     39      [innerBC, "inner"]
     40    ];
     41 
     42    const enterPromise = waitRemoteFullscreenEnterEvents(browsingContexts);
     43    // Trigger click event in inner most iframe
     44    SpecialPowers.spawn(innerBC, [], function () {
     45      content.setTimeout(() => {
     46        content.document.getElementById("div").click();
     47      }, 0);
     48    });
     49    await enterPromise;
     50 
     51    const exitPromise = waitRemoteFullscreenExitEvents(browsingContexts);
     52    // Trigger fullscreen exit in inner most iframe
     53    SpecialPowers.spawn(innerBC, [], function () {
     54      content.setTimeout(() => {
     55        content.document.exitFullscreen();
     56      }, 0);
     57    });
     58    await exitPromise;
     59 
     60    iframe.remove();
     61  });
     62 });
     63 
     64 </script>