Allow spawning inline sessions without interaction

This commit is contained in:
Manish Goregaokar 2019-12-11 21:44:35 -08:00
parent fe7cbd7843
commit d12f8e31a3
5 changed files with 16 additions and 17 deletions

View file

@ -162,12 +162,12 @@ impl XRMethods for XR {
) -> Rc<Promise> {
let promise = Promise::new_in_current_compartment(&self.global(), comp);
if !ScriptThread::is_user_interacting() {
promise.reject_error(Error::Security);
return promise;
}
if mode != XRSessionMode::Inline {
if !ScriptThread::is_user_interacting() {
promise.reject_error(Error::Security);
return promise;
}
if self.pending_or_active_session() {
promise.reject_error(Error::InvalidState);
return promise;

View file

@ -727683,7 +727683,7 @@
"testharness"
],
"webxr/xrWebGLLayer_constructor.https.html": [
"0584da79c12def757f951ec53c4c048f18c39b8c",
"dda7ec80310f7ff8aac582a98410886ab4d1b81d",
"testharness"
],
"webxr/xrWebGLLayer_framebuffer_draw.https.html": [

View file

@ -1,4 +0,0 @@
[xrDevice_requestSession_non_immersive_no_gesture.https.html]
[Requesting non-immersive session outside of a user gesture succeeds]
expected: FAIL

View file

@ -1,4 +1,5 @@
[xrWebGLLayer_constructor.https.html]
expected: ERROR
[Ensure that XRWebGLLayer's constructor throws appropriate errors]
expected: FAIL
expected: TIMEOUT

View file

@ -31,12 +31,14 @@ xr_promise_test("Ensure that XRWebGLLayer's constructor throws appropriate error
navigator.xr.test.simulateUserActivation(() => {
navigator.xr.requestSession('immersive-vr')
.then((session) => {
try {
let webglLayerIncompatible = new XRWebGLLayer(session, gl);
assert_unreached("XRWebGLLayer should fail when created with a context that is not XRCompatible")
} catch (err) {
assert_equals(err.name, "InvalidStateError");
}
t.step_func(() => {
try {
let webglLayerIncompatible = new XRWebGLLayer(session, gl);
assert_unreached("XRWebGLLayer should fail when created with a context that is not XRCompatible")
} catch (err) {
assert_equals(err.name, "InvalidStateError");
}
})
gl.makeXRCompatible();