tor-browser

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

element-request-fullscreen-and-move-to-iframe.html (2056B)


      1 <!DOCTYPE html>
      2 <title>
      3    Element#requestFullscreen() followed by moving the element into an iframe
      4 </title>
      5 <script src="/resources/testharness.js"></script>
      6 <script src="/resources/testharnessreport.js"></script>
      7 <script src="/resources/testdriver.js"></script>
      8 <script src="/resources/testdriver-vendor.js"></script>
      9 <script src="../trusted-click.js"></script>
     10 <div id="log"></div>
     11 <div id="target"></div>
     12 <iframe allowfullscreen></iframe>
     13 <script>
     14    // rfsPromise will be uncaught
     15    setup({ allow_uncaught_exception: true });
     16 
     17    promise_test(async (t) => {
     18        const iframe = document.querySelector("iframe");
     19        await new Promise((r) => {
     20            iframe.onload = r;
     21            iframe.src = "about:blank";
     22        });
     23        const target = document.getElementById("target");
     24        const iframeDoc = iframe.contentDocument;
     25 
     26        iframeDoc.onfullscreenchange = t.unreached_func(
     27            "fullscreenchange event in iframe"
     28        );
     29        iframeDoc.onfullscreenerror = t.unreached_func(
     30            "fullscreenerror event in iframe"
     31        );
     32        document.onfullscreenchange = t.unreached_func(
     33            "fullscreenchange event"
     34        );
     35 
     36        const errorPromise = new Promise(
     37            (resolve) => (document.onfullscreenerror = resolve)
     38        );
     39        await trusted_click(document.body);
     40        const rfsPromise = target.requestFullscreen();
     41        iframeDoc.body.appendChild(target);
     42        const event = await errorPromise;
     43        assert_equals(
     44            iframeDoc.fullscreenElement,
     45            null,
     46            "inner fullscreen element"
     47        );
     48        assert_equals(
     49            document.fullscreenElement,
     50            null,
     51            "outer fullscreen element"
     52        );
     53        assert_equals(event.target, document, "event target");
     54        await promise_rejects_js(
     55            t,
     56            TypeError,
     57            rfsPromise,
     58            "requestFullscreen promise"
     59        );
     60    }, "Element#requestFullscreen() followed by moving the element into an iframe");
     61 </script>