tor-browser

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

xrReferenceSpace_relationships.https.html (2432B)


      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 <script>
      8 let testName =
      9  "Bounded space, viewer space, local and local-floor space have correct poses w.r.t. each other";
     10 // 1m above world origin.
     11 const VIEWER_ORIGIN_TRANSFORM = {
     12  position: [0, 1, 0],
     13  orientation: [0, 0, 0, 1],
     14 };
     15 // 0.25m above world origin.
     16 const FLOOR_ORIGIN_TRANSFORM = {
     17  position: [0, 0.25, 0],
     18  orientation: [0, 0, 0, 1],
     19 };
     20 const fakeDeviceInitParams = {
     21    supportsImmersive: true,
     22    supportedModes: ["inline", "immersive-vr"],
     23    views: VALID_VIEWS,
     24    viewerOrigin: VIEWER_ORIGIN_TRANSFORM,
     25    floorOrigin: FLOOR_ORIGIN_TRANSFORM,
     26    supportedFeatures: ALL_FEATURES
     27 };
     28 let testFunction = function(session, fakeDeviceController, t) {
     29  return new Promise((resolve, reject) => {
     30    Promise.all([
     31      session.requestReferenceSpace('bounded-floor'),
     32      session.requestReferenceSpace('local'),
     33      session.requestReferenceSpace('local-floor'),
     34      session.requestReferenceSpace('viewer')
     35    ]).then(([boundedSpace, localSpace, localFloorSpace, viewerSpace]) => {
     36      t.step(() => {
     37      });
     38      const onFrame = function(time, xrFrame) {
     39        const localFloorPoseInLocalSpace = xrFrame.getPose(localFloorSpace, localSpace);
     40        const viewerPoseInLocalFloorSpace = xrFrame.getPose(viewerSpace, localFloorSpace);
     41        const boundedFloorPoseInLocalFloorSpace = xrFrame.getPose(boundedSpace, localFloorSpace);
     42        t.step(() => {
     43          // Local floor space is supposed to be 0.25m above local space (aka world space).
     44          assert_equals(localFloorPoseInLocalSpace.transform.position.y, 0.25);
     45          // Bounded floor space should be at the same height as local floor space.
     46          assert_equals(boundedFloorPoseInLocalFloorSpace.transform.position.y, 0.0);
     47          // Viewer space should be additional 0.75m above local-floor space.
     48          assert_equals(viewerPoseInLocalFloorSpace.transform.position.y, 0.75);
     49        });
     50        resolve();
     51      }
     52      session.requestAnimationFrame(onFrame);
     53    });
     54  });
     55 };
     56 xr_session_promise_test(testName, testFunction, fakeDeviceInitParams, 'immersive-vr', { 'requiredFeatures': ['local-floor', 'bounded-floor'] });
     57 </script>