tor-browser

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

xrSession_visibilityState_inline.https.html (2426B)


      1 <!DOCTYPE html>
      2 <html>
      3 <title>View transitions: Transition in a hidden page</title>
      4 <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
      5 <meta name="timeout" content="long">
      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="resources/webxr_util.js"></script>
     11 <script src="resources/webxr_test_constants.js"></script>
     12 <script src="../page-visibility/resources/window_state_context.js"></script>
     13 <script>
     14 let watcherDone = new Event("watcherdone");
     15 
     16 let fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE;
     17 let testName = "Ensures that the XRSession's visibilityState is correctly "
     18  + "reported and that the associated visibilitychange event fires for "
     19  + "non-immersive sessions.";
     20 
     21 promise_test(
     22  async (setup) => {
     23    xr_session_promise_test(
     24      testName,
     25      (session, fakeDeviceController, t) => {
     26        let wsc = null;
     27        let eventWatcher = new EventWatcher(
     28          t, session, ["visibilitychange", "watcherdone"]);
     29        let eventPromise = eventWatcher.wait_for(
     30          ["visibilitychange", "visibilitychange", "watcherdone"]);
     31 
     32        async function showDocument() {
     33          await wsc.restore();
     34        }
     35 
     36        async function hideDocument() {
     37          wsc = window_state_context(t);
     38          await wsc.minimize();
     39        }
     40 
     41        function onSessionVisibilityChangeVisible(event) {
     42          t.step( () => {
     43            assert_equals(session.visibilityState, "visible");
     44          });
     45          t.step_timeout(()=>{
     46            session.dispatchEvent(watcherDone);
     47          }, 300);
     48        }
     49 
     50        function onSessionVisibilityChangeHidden(event) {
     51          t.step( () => {
     52            assert_equals(session.visibilityState, "hidden");
     53          });
     54          session.removeEventListener("visibilitychange", onSessionVisibilityChangeHidden, false);
     55          session.addEventListener("visibilitychange", onSessionVisibilityChangeVisible, false);
     56          showDocument();
     57        }
     58 
     59        assert_equals(session.visibilityState, "visible");
     60 
     61        session.addEventListener("visibilitychange", onSessionVisibilityChangeHidden, false);
     62        hideDocument();
     63 
     64        return eventPromise;
     65      },
     66      fakeDeviceInitParams, 'inline'
     67    );
     68  },
     69  "setup"
     70 );
     71 </script>
     72 </body>
     73 </html>