Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test has a WPT meta file that expects 1 subtest issues.
- This WPT test may be referenced by the following Test IDs:
- /webxr/xrSession_prevent_multiple_exclusive.https.html - WPT Dashboard Interop Dashboard
<!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>