tor-browser

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

xrSession_requestReferenceSpace_features.https.html (3769B)


      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  <script>
      8 
      9    let makeSpaceTest = (space_type) => {
     10      return (session, fakeDeviceController, t) => {
     11        return session.requestReferenceSpace(space_type).then( (referenceSpace) => {
     12          t.step(() => {
     13            assert_true(referenceSpace instanceof XRReferenceSpace,
     14              "reference space is not correct type.");
     15          });
     16        });
     17      };
     18    };
     19 
     20    let makeInvalidSpaceTest = (space_type) => {
     21      return (session, fakeDeviceController, t) => {
     22          return  promise_rejects_dom(t, "NotSupportedError",
     23                                  session.requestReferenceSpace(space_type),
     24                                  "requestReferenceSpace('" + space_type + "')");
     25      };
     26    };
     27 
     28    let fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE;
     29 
     30    // Test that reference spaces matching default features work.
     31    xr_session_promise_test(
     32        "Non-immersive session supports viewer space by default",
     33        makeSpaceTest('viewer'), fakeDeviceInitParams, 'inline', {});
     34    xr_session_promise_test(
     35        "Immersive session supports viewer space by default",
     36        makeSpaceTest('viewer'), fakeDeviceInitParams, 'immersive-vr', {});
     37    xr_session_promise_test(
     38        "Immersive session supports local space by default",
     39        makeSpaceTest('local'), fakeDeviceInitParams, 'immersive-vr', {});
     40 
     41    // Test that session-appropriate non-default reference spaces work when requested
     42    xr_session_promise_test(
     43        "Non-immersive session supports local space when required",
     44        makeSpaceTest('local'), fakeDeviceInitParams, 'inline',
     45        {requiredFeatures: ['local']});
     46    xr_session_promise_test(
     47        "Non-immersive session supports local space when optional",
     48        makeSpaceTest('local'), fakeDeviceInitParams, 'inline',
     49        {optionalFeatures: ['local']});
     50    xr_session_promise_test(
     51        "Non-immersive session supports local-floor space when required",
     52        makeSpaceTest('local-floor'), fakeDeviceInitParams, 'inline',
     53        {requiredFeatures: ['local-floor']});
     54    xr_session_promise_test(
     55        "Immersive session supports local-floor space when required",
     56        makeSpaceTest('local-floor'), fakeDeviceInitParams, 'immersive-vr',
     57        {requiredFeatures: ['local-floor']});
     58    xr_session_promise_test(
     59        "Immersive session supports local-floor space when optional",
     60        makeSpaceTest('local-floor'), fakeDeviceInitParams, 'immersive-vr',
     61        {optionalFeatures: ['local-floor']});
     62 
     63    // Test that inline space can't request 'bounded-floor' or 'unbounded'
     64    xr_session_promise_test(
     65        "Non-immersive session rejects bounded-floor space even when requested",
     66        makeInvalidSpaceTest('bounded-floor'), fakeDeviceInitParams, 'inline',
     67        {optionalFeatures: ['bounded-floor']});
     68    xr_session_promise_test(
     69       "Non-immersive session rejects unbounded space even when requested",
     70        makeInvalidSpaceTest('unbounded'), fakeDeviceInitParams, 'inline',
     71        {optionalFeatures: ['unbounded']});
     72 
     73    // Test that reference spaces that aren't default features are rejected
     74    // when not requested as a feature.
     75    xr_session_promise_test(
     76       "Non-immersive session rejects local space if not requested",
     77        makeInvalidSpaceTest('local'), fakeDeviceInitParams, 'inline', {});
     78    xr_session_promise_test(
     79       "Immersive session rejects local-floor space if not requested",
     80        makeInvalidSpaceTest('local-floor'), fakeDeviceInitParams, 'immersive-vr', {});
     81  </script>
     82 </body>