tor-browser

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

getInputPose_handedness.https.html (2301B)


      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 
      7 <script>
      8 
      9 let testName = "XRInputSources properly communicate their handedness";
     10 
     11 let fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE;
     12 
     13 let testFunction =
     14  (session, fakeDeviceController, t) => new Promise((resolve) => {
     15    let input_source = fakeDeviceController.simulateInputSourceConnection({
     16      handedness: "none",
     17      targetRayMode: "tracked-pointer",
     18      pointerOrigin: VALID_POINTER_TRANSFORM,
     19      profiles: []
     20    });
     21 
     22    function CheckNone(time, xrFrame) {
     23      let source = session.inputSources[0];
     24 
     25      t.step( () => {
     26        assert_not_equals(source, null);
     27        // Handedness should be "none" by default.
     28        assert_equals(source.handedness, "none");
     29      });
     30 
     31      input_source.setHandedness("right");
     32 
     33      session.requestAnimationFrame(CheckRight);
     34    }
     35 
     36    function CheckRight(time, xrFrame) {
     37      let source = session.inputSources[0];
     38 
     39      t.step( () => {
     40        assert_not_equals(source, null);
     41        // Handedness was set to "right", make sure it propegates.
     42        assert_equals(source.handedness, "right");
     43      });
     44 
     45      input_source.setHandedness("left");
     46 
     47      session.requestAnimationFrame(CheckLeft);
     48    }
     49 
     50    function CheckLeft(time, xrFrame) {
     51      let source = session.inputSources[0];
     52 
     53      t.step( () => {
     54        assert_not_equals(source, null);
     55        // Handedness was set to "left", make sure it propegates.
     56        assert_equals(source.handedness, "left");
     57      });
     58 
     59      input_source.setHandedness("none");
     60 
     61      session.requestAnimationFrame(CheckNoneAgain);
     62    }
     63 
     64    function CheckNoneAgain(time, xrFrame) {
     65      let source = session.inputSources[0];
     66 
     67      t.step( () => {
     68        assert_not_equals(source, null);
     69        // Handedness was set to "none" again, make sure it propegates.
     70        assert_equals(source.handedness, "none");
     71      });
     72 
     73      resolve();
     74    }
     75 
     76    // Handedness only updates during an XR frame.
     77    requestSkipAnimationFrame(session, CheckNone);
     78  });
     79 
     80 xr_session_promise_test(
     81  testName, testFunction, fakeDeviceInitParams, 'immersive-vr');
     82 
     83 </script>