| <!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> |
| xr_promise_test( |
| "Test prevention of multiple simultaneous immersive sessions", |
| (t) => { |
| return navigator.xr.test.simulateDeviceConnection(TRACKED_IMMERSIVE_DEVICE) |
| .then( (controller) => new Promise((resolve) => { |
| navigator.xr.test.simulateUserActivation( () => { |
| resolve(navigator.xr.requestSession('immersive-vr') |
| .then( (session) => new Promise((resolve) => { |
| navigator.xr.test.simulateUserActivation( () => { |
| // Requesting a second immersive session when another immersive |
| // session is active should fail. Immersive sessions |
| // should take up the users entire view, and therefore it should |
| // be impossible for a user to be engaged with more than one. |
| resolve(promise_rejects_dom( |
| t, |
| "InvalidStateError", |
| navigator.xr.requestSession('immersive-vr') |
| ).then( () => { |
| // End the immersive session and try again. Now the immersive |
| // session creation should succeed. |
| return session.end().then( () => new Promise((resolve) => { |
| navigator.xr.test.simulateUserActivation( () => { |
| resolve(navigator.xr.requestSession('immersive-vr')); |
| }); |
| })); |
| })); |
| }); |
| }))); |
| }); |
| })); |
| }); |
| |
| </script> |
| </body> |