tor-browser

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

xrSession_requestAnimationFrame_data_valid.https.html (1843B)


      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    const testName = "RequestAnimationFrame resolves with good data";
     10 
     11    const fakeDeviceInitOptions = TRACKED_IMMERSIVE_DEVICE;
     12 
     13    let testSession;
     14 
     15    function checkView(view) {
     16      assert_not_equals(view, null);
     17      assert_not_equals(view.transform, null);
     18 
     19      let inv_view_transform = view.transform.inverse;
     20      assert_not_equals(inv_view_transform, null);
     21      assert_not_equals(inv_view_transform.matrix, null);
     22      assert_equals(inv_view_transform.matrix.length, 16);
     23    }
     24 
     25    let testFunction = function(session, testDeviceController) {
     26      testSession = session;
     27      return session.requestReferenceSpace('local')
     28        .then((referenceSpace) => new Promise((resolve) => {
     29 
     30          function onFrame(time, xrFrame) {
     31            assert_true(xrFrame instanceof XRFrame);
     32 
     33            let viewerPose = xrFrame.getViewerPose(referenceSpace);
     34 
     35            assert_not_equals(viewerPose, null);
     36            for(let i = 0; i < IDENTITY_MATRIX.length; i++) {
     37              assert_equals(viewerPose.transform.matrix[i], IDENTITY_MATRIX[i]);
     38            }
     39 
     40            assert_not_equals(viewerPose.views, null);
     41            assert_equals(viewerPose.views.length, 2);
     42            checkView(viewerPose.views[0]);
     43            checkView(viewerPose.views[1]);
     44 
     45            // Test does not complete until the returned promise resolves.
     46            resolve();
     47          }
     48 
     49          testSession.requestAnimationFrame(onFrame);
     50        })
     51      );
     52    }
     53 
     54    xr_session_promise_test(
     55      testName, testFunction, fakeDeviceInitOptions, 'immersive-vr');
     56  </script>
     57 </body>