diff options
Diffstat (limited to 'testing/web-platform/tests/webxr/xrSession_enabledFeatures.https.html')
-rw-r--r-- | testing/web-platform/tests/webxr/xrSession_enabledFeatures.https.html | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/testing/web-platform/tests/webxr/xrSession_enabledFeatures.https.html b/testing/web-platform/tests/webxr/xrSession_enabledFeatures.https.html new file mode 100644 index 0000000000..ba9045597c --- /dev/null +++ b/testing/web-platform/tests/webxr/xrSession_enabledFeatures.https.html @@ -0,0 +1,87 @@ +<!DOCTYPE html> +<body> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="resources/webxr_util.js"></script> +<script src="resources/webxr_test_constants.js"></script> +<canvas></canvas> +<script> + + const testName = "Validate enabledFeatures on XRSession"; + + const supportedFeatureList = [ + 'viewer', + 'local', + 'local-floor', + 'anchors', + 'hit-test', + 'dom-overlay' + ]; + + const fakeDeviceInitParams = { + supportsImmersive: true, + supportedModes: ["inline", "immersive-vr"], + views: VALID_VIEWS, + viewerOrigin: IDENTITY_TRANSFORM, + supportedFeatures: supportedFeatureList + }; + + // NOTE: We explicit don't ask for the 'default' features of viewer/local to + // verify that they are being added here. + const requestFeatures = [ + 'local-floor', + 'anchors', + 'secondary-views', + 'camera-access', + ]; + +const testFunction = function(session, fakeDeviceController, t) { + return new Promise((resolve,reject) => { + const unsupportedRequestedFeatures = []; + + for (const feature of requestFeatures) { + if (!supportedFeatureList.includes(feature)) + unsupportedRequestedFeatures.push(feature); + } + + const enabledFeatures = session.enabledFeatures; + const modeDefaultFeatures = DEFAULT_FEATURES[session.mode]; + + t.step(() => { + // Whether they were requested or not, all Default features should be + // enabled. + for (const feature of modeDefaultFeatures) { + assert_true(enabledFeatures.includes(feature), + "Did not support default feature: " + feature); + } + + // Assert that we asked for everything that was included apart from the + // default features + for (const feature of enabledFeatures) { + assert_true(requestFeatures.includes(feature) || + modeDefaultFeatures.includes(feature), + "Enabled unrequested feature: " + feature); + } + + // Assert that all of the features we asked are either excluded because + // they were unsupported, or included because they were supported. + for (const feature of requestFeatures) { + if (unsupportedRequestedFeatures.includes(feature)) { + assert_false(enabledFeatures.includes(feature), + "Enabled supposedly unsupported feature: " + feature); + } else { + assert_true(enabledFeatures.includes(feature), + "Did not enable supposedly supported feature: " + feature); + } + } + }); + + resolve(); + }); +}; + +xr_session_promise_test(testName, testFunction, + fakeDeviceInitParams, 'immersive-vr', { optionalFeatures: requestFeatures }); + +</script> +</body> |