tor-browser

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

xrSession_cancelAnimationFrame.https.html (1926B)


      1 <!DOCTYPE html>
      2 <body>
      3  <script src=/resources/testharness.js></script>
      4  <script src=/resources/testharnessreport.js></script>
      5  <script src="resources/webxr_util.js"></script>
      6  <script src="resources/webxr_test_constants.js"></script>
      7 
      8  <script>
      9    let immersiveTestName = "XRSession requestAnimationFrame callbacks can be "
     10      + "unregistered with cancelAnimationFrame for immersive sessions";
     11    let nonImmersiveTestName = "XRSession requestAnimationFrame callbacks can be "
     12      + "unregistered with cancelAnimationFrame for non-immersive sessions";
     13 
     14    let fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE;
     15 
     16    let testFunction = (session) => new Promise((resolve, reject) => {
     17 
     18      // Schedule and immediately cancel animation frame
     19      session.cancelAnimationFrame(session.requestAnimationFrame(
     20        (time, vrFrame) => { reject("Cancelled frame callback was called"); }));
     21 
     22      let counter = 0;
     23      let handle;
     24      function onFrame(time, vrFrame) {
     25        // Cancel the second animation frame.
     26        if (handle != 0) {
     27          session.cancelAnimationFrame(handle);
     28          handle = 0;
     29        }
     30 
     31        // Run a few more animation frames to be sure that the cancelled frame isn't
     32        // going to call.
     33        counter++;
     34        if (counter >= 4) {
     35          // Ok, we're done here.
     36          resolve();
     37        } else {
     38          session.requestAnimationFrame(onFrame);
     39        }
     40      }
     41 
     42      // Schedule two animation frame and cancel one during on animation frame.
     43      session.requestAnimationFrame(onFrame);
     44      handle = session.requestAnimationFrame(
     45        (time, vrFrame) => { reject("Cancelled frame callback was called"); });
     46    });
     47 
     48    xr_session_promise_test(immersiveTestName, testFunction,
     49      fakeDeviceInitParams, 'immersive-vr');
     50    xr_session_promise_test(nonImmersiveTestName, testFunction,
     51      fakeDeviceInitParams, 'inline');
     52 
     53  </script>
     54 </body>