summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/webxr/xrSession_enabledFeatures.https.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/webxr/xrSession_enabledFeatures.https.html')
-rw-r--r--testing/web-platform/tests/webxr/xrSession_enabledFeatures.https.html87
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>