tor-browser

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

xrSession_enabledFeatures.https.html (2693B)


      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  const testName = "Validate enabledFeatures on XRSession";
     11 
     12  const supportedFeatureList = [
     13    'viewer',
     14    'local',
     15    'local-floor',
     16    'anchors',
     17    'hit-test',
     18    'dom-overlay'
     19  ];
     20 
     21  const fakeDeviceInitParams = {
     22    supportsImmersive: true,
     23    supportedModes: ["inline", "immersive-vr"],
     24    views: VALID_VIEWS,
     25    viewerOrigin: IDENTITY_TRANSFORM,
     26    supportedFeatures: supportedFeatureList
     27  };
     28 
     29  // NOTE: We explicit don't ask for the 'default' features of viewer/local to
     30  // verify that they are being added here.
     31  const requestFeatures = [
     32    'local-floor',
     33    'anchors',
     34    'secondary-views',
     35    'camera-access',
     36  ];
     37 
     38 const testFunction = function(session, fakeDeviceController, t) {
     39  return new Promise((resolve,reject) => {
     40    const unsupportedRequestedFeatures = [];
     41 
     42    for (const feature of requestFeatures) {
     43      if (!supportedFeatureList.includes(feature))
     44      unsupportedRequestedFeatures.push(feature);
     45    }
     46 
     47    const enabledFeatures = session.enabledFeatures;
     48    const modeDefaultFeatures = DEFAULT_FEATURES[session.mode];
     49 
     50    t.step(() => {
     51      // Whether they were requested or not, all Default features should be
     52      // enabled.
     53      for (const feature of modeDefaultFeatures) {
     54        assert_true(enabledFeatures.includes(feature),
     55          "Did not support default feature: " + feature);
     56      }
     57 
     58      // Assert that we asked for everything that was included apart from the
     59      // default features
     60      for (const feature of enabledFeatures) {
     61        assert_true(requestFeatures.includes(feature) ||
     62                    modeDefaultFeatures.includes(feature),
     63                    "Enabled unrequested feature: " + feature);
     64      }
     65 
     66      // Assert that all of the features we asked are either excluded because
     67      // they were unsupported, or included because they were supported.
     68      for (const feature of requestFeatures) {
     69        if (unsupportedRequestedFeatures.includes(feature)) {
     70          assert_false(enabledFeatures.includes(feature),
     71            "Enabled supposedly unsupported feature: " + feature);
     72        } else {
     73          assert_true(enabledFeatures.includes(feature),
     74            "Did not enable supposedly supported feature: " + feature);
     75        }
     76      }
     77    });
     78 
     79    resolve();
     80  });
     81 };
     82 
     83 xr_session_promise_test(testName, testFunction,
     84  fakeDeviceInitParams, 'immersive-vr', { optionalFeatures: requestFeatures });
     85 
     86 </script>
     87 </body>