tor-browser

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

ar_hittest_subscription_states_transient.https.html (2659B)


      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_asserts.js"></script>
      6 <script src="../resources/webxr_test_constants.js"></script>
      7 <script src="../resources/webxr_test_constants_fake_world.js"></script>
      8 
      9 <script>
     10 
     11 const fakeDeviceInitParams = {
     12  supportedModes: ["immersive-ar"],
     13  views: VALID_VIEWS,
     14  supportedFeatures: ALL_FEATURES,
     15 };
     16 
     17 // Creates a test method that leverages hit test API for transient input.
     18 // |shouldSucceed| - true if the hit test request is expected to succeed, false otherwise
     19 // |endSession| - true if the test case should call session.end() prior to requesting hit test
     20 // |expectedError| - expected error name that should be returned in case shouldSucceed is false
     21 const testFunctionGeneratorTransient = function(shouldSucceed, endSession, expectedError) {
     22  const testFunction = function(session, fakeDeviceController, t) {
     23    const hitTestOptionsInit = {
     24      profile: "generic-touchscreen",
     25      offsetRay: new XRRay(),
     26    };
     27 
     28    if(endSession) {
     29      session.end();
     30    }
     31 
     32    return session.requestHitTestSourceForTransientInput(hitTestOptionsInit)
     33                  .then((hitTestSource) => {
     34      t.step(() => {
     35        assert_true(shouldSucceed,
     36          "`requestHitTestSourceForTransientInput` succeeded when it was expected to fail");
     37      });
     38    }).catch((error) => {
     39      t.step(() => {
     40        assert_false(shouldSucceed,
     41          "`requestHitTestSourceForTransientInput` failed when it was expected to succeed, error: " + error);
     42        assert_equals(error.name, expectedError,
     43          "`requestHitTestSourceForTransientInput` failed with unexpected error name");
     44      });
     45    });
     46  };
     47 
     48  return testFunction;
     49 };
     50 
     51 xr_session_promise_test("Transient hit test subscription succeeds if the feature was requested",
     52  testFunctionGeneratorTransient(/*shouldSucceed=*/true, /*endSession=*/false),
     53  fakeDeviceInitParams,
     54  'immersive-ar', { 'requiredFeatures': ['hit-test'] });
     55 
     56 xr_session_promise_test("Transient hit test subscription fails if the feature was not requested",
     57  testFunctionGeneratorTransient(/*shouldSucceed=*/false, /*endSession=*/false, "NotSupportedError"),
     58  fakeDeviceInitParams,
     59  'immersive-ar', {});
     60 
     61 xr_session_promise_test("Transient test subscription fails if the feature was requested but the session already ended",
     62  testFunctionGeneratorTransient(/*shouldSucceed=*/false, /*endSession=*/true, "InvalidStateError"),
     63  fakeDeviceInitParams,
     64  'immersive-ar', { 'requiredFeatures': ['hit-test'] });
     65 
     66 </script>