summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/webxr/xrSession_features_deviceSupport.https.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/webxr/xrSession_features_deviceSupport.https.html')
-rw-r--r--testing/web-platform/tests/webxr/xrSession_features_deviceSupport.https.html60
1 files changed, 60 insertions, 0 deletions
diff --git a/testing/web-platform/tests/webxr/xrSession_features_deviceSupport.https.html b/testing/web-platform/tests/webxr/xrSession_features_deviceSupport.https.html
new file mode 100644
index 0000000000..2e06523224
--- /dev/null
+++ b/testing/web-platform/tests/webxr/xrSession_features_deviceSupport.https.html
@@ -0,0 +1,60 @@
+<!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>
+
+ let testName =
+ "Immersive XRSession requests with no supported device should reject";
+
+ let fakeDeviceInitParams = {
+ supportsImmersive: true,
+ supportedModes: ["inline", "immersive-vr"],
+ views: VALID_VIEWS,
+ viewerOrigin: IDENTITY_TRANSFORM,
+ supportedFeatures: [
+ "viewer",
+ "local",
+ "local-floor"]
+ };
+
+
+ xr_promise_test(testName,
+ (t) => {
+ function session_resolves(sessionMode, sessionInit) {
+ return navigator.xr.requestSession(sessionMode, sessionInit)
+ .then((session) => {
+ return session.end();
+ });
+ }
+
+ return navigator.xr.test.simulateDeviceConnection(fakeDeviceInitParams)
+ .then((controller) =>
+ promise_simulate_user_activation(() => {
+ // Attempting to request required features that aren't supported by
+ // the device should reject.
+
+ return promise_rejects_dom(t, "NotSupportedError",
+ navigator.xr.requestSession("immersive-vr", {
+ requiredFeatures: ['bounded-floor']
+ }))
+ }).then(() => promise_simulate_user_activation(() => {
+ // Attempting to request with an unsupported feature as optional
+ // should succeed
+ return session_resolves("immersive-vr", {
+ optionalFeatures: ['bounded-floor']
+ });
+ })).then(() => promise_simulate_user_activation(() => {
+ // Attempting to request with supported features only should succeed.
+ return session_resolves("immersive-vr", {
+ requiredFeatures: ['local', 'local-floor']
+ })
+ }))
+ );
+ });
+
+</script>
+</body>