| <!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> |