blob: 95ee719b3ad7a9dda785412bc94095700fc1ad6e [file] [log] [blame]
<!DOCTYPE html>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
<script src="file:///gen/device/vr/public/mojom/vr_service.mojom.js"></script>
<script src="../xr/resources/xr-device-mocking.js"></script>
<script src="../xr/resources/xr-test-utils.js"></script>
<script src="../xr/resources/test-constants.js"></script>
<canvas id="webgl-canvas"></canvas>
<script>
let fakeDevices = fakeXRDevices();
promise_test( (t) => {
setFakeDevices([fakeDevices["FakeGooglePixelPhone"]]);
return navigator.xr.requestDevice().then( (device) => new Promise((resolve) => {
runWithUserGesture( () => {
resolve(device.requestSession({ immersive: true })
.then( (session) => new Promise((resolve) => {
runWithUserGesture( () => {
// Requesting a second immersive session from a device that already
// has an active immersive session should fail. Immersive sessions
// are, well... immersive!
resolve(promise_rejects(
t,
"InvalidStateError",
device.requestSession({ immersive: true })
).then( () => {
// End the immersive session and try again. Now the immersive
// session creation should succeed.
return session.end().then( () => new Promise((resolve) => {
runWithUserGesture( () => {
resolve(device.requestSession({ immersive: true }));
});
}));
}));
});
})));
});
}));
}, "requestSession prevents creation of multiple simultaneous immersive sessions");
</script>