tor-browser

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

xrInputSource_emulatedPosition.https.html (2016B)


      1 <!DOCTYPE html>
      2 <script src="/resources/testharness.js"></script>
      3 <script src="/resources/testharnessreport.js"></script>
      4 <script src="resources/webxr_util.js"></script>
      5 <script src="resources/webxr_test_constants.js"></script>
      6 <script src="resources/webxr_test_asserts.js"></script>
      7 
      8 <script>
      9 
     10 let testName = "Poses from XRInputSource.gripSpace have emulatedPosition set "
     11  + "properly";
     12 
     13 let fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE;
     14 
     15 let testFunction =
     16  (session, fakeDeviceController, t) => new Promise((resolve) => {
     17    let input_source = fakeDeviceController.simulateInputSourceConnection({
     18      handedness: "right",
     19      targetRayMode: "tracked-pointer",
     20      pointerOrigin: IDENTITY_TRANSFORM,
     21      gripOrigin: VALID_GRIP_TRANSFORM,
     22      profiles: []
     23    });
     24 
     25    // Must have a reference space to get input poses. eye-level doesn't apply
     26    // any transforms to the given matrix.
     27    session.requestReferenceSpace('local').then( (referenceSpace) => {
     28 
     29      function CheckPositionNotEmulated(time, xrFrame) {
     30        let source = session.inputSources[0];
     31        let grip_pose = xrFrame.getPose(source.gripSpace, referenceSpace);
     32 
     33        t.step(() => {
     34          assert_not_equals(grip_pose, null);
     35          assert_equals(grip_pose.emulatedPosition, false);
     36        });
     37 
     38        input_source.setGripOrigin(VALID_GRIP_TRANSFORM, true);
     39        session.requestAnimationFrame(CheckPositionEmulated);
     40      }
     41 
     42      function CheckPositionEmulated(time, xrFrame) {
     43        let source = session.inputSources[0];
     44        let grip_pose = xrFrame.getPose(source.gripSpace, referenceSpace);
     45 
     46        t.step(() => {
     47          assert_not_equals(grip_pose, null);
     48          assert_equals(grip_pose.emulatedPosition, true);
     49        });
     50 
     51        resolve();
     52      }
     53 
     54      // Can only request input poses in an xr frame.
     55      requestSkipAnimationFrame(session, CheckPositionNotEmulated);
     56    });
     57  });
     58 
     59 xr_session_promise_test(
     60  testName, testFunction, fakeDeviceInitParams, 'immersive-vr');
     61 
     62 </script>