tor-browser

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

xrSession_viewer_availability.https.html (2434B)


      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 <canvas></canvas>
      8 <script>
      9 
     10  let testName =
     11    "Inline viewer support with no device";
     12 
     13  // Purposefully not connecting a device to ensure that viewer is always
     14  // supported if that is the only feature requested.
     15  xr_promise_test(testName,
     16    (t) => {
     17    function session_resolves(sessionMode, sessionInit) {
     18      return navigator.xr.requestSession(sessionMode, sessionInit)
     19        .then(session => session.end());
     20    }
     21 
     22    function session_rejects(expected, sessionMode, sessionInit) {
     23      return promise_rejects_dom(t, expected, navigator.xr.requestSession(sessionMode, sessionInit)
     24        .then(session => session.end()));
     25    }
     26 
     27    return session_resolves('inline', {
     28      // RequestSession with 'viewer' as a required featre should succeed, even
     29      // without user activation.
     30      requiredFeatures: ['viewer']
     31    })
     32    .then(() => {
     33      // RequestSession with 'viewer' as an optional feature should succeed, even
     34      // without user activation.
     35      return session_resolves('inline', {
     36        optionalFeatures: ['viewer']
     37      })
     38    })
     39    .then(() => {
     40      // RequestSession with no requirements should succeed.
     41      return session_resolves('inline', {});
     42    })
     43    .then(() => {
     44      // RequestSession with non-viewer optional features should fail
     45      // without user activation.
     46      return session_rejects("SecurityError", 'inline', {
     47        optionalFeatures: ['local']
     48      });
     49    })
     50    .then(() => {
     51      // RequestSession with non-viewer required features should fail
     52      // without user activation.
     53      return session_rejects("SecurityError", 'inline', {
     54        optionalFeatures: ['local']
     55      });
     56    })
     57    .then(() => promise_simulate_user_activation(() => {
     58      // RequestSession with unsupported optional features should succeed.
     59      return session_resolves('inline', {
     60        requiredFeatures: ['viewer'],
     61        optionalFeatures: ['local']
     62      })
     63    }))
     64    .then(() => promise_simulate_user_activation(() => {
     65      // Request with unsupported required features should reject.
     66      return session_rejects("NotSupportedError", 'inline', {
     67          requiredFeatures: ['local']
     68      });
     69    }));
     70  });
     71 
     72 </script>
     73 </body>