mirror of
https://github.com/servo/servo.git
synced 2025-08-09 23:45:35 +01:00
Auto merge of #24133 - paulrouget:userAction, r=jdm
Do not allow XR session on non user-activated events This sets the thread in "user interaction mode" when the dispatched event is trusted. I also tried an approach where we would not rely on the dispatched event but just set "user interaction mode" when we get a compositor event (which, we can assume, are only user generated). That worked as well. Fixes #23787. <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/24133) <!-- Reviewable:end -->
This commit is contained in:
commit
293ccd07e8
9 changed files with 54 additions and 15 deletions
|
@ -702192,7 +702192,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"webxr/xrWebGLLayer_constructor.https.html": [
|
||||
"0584da79c12def757f951ec53c4c048f18c39b8c",
|
||||
"7e57f4286c66ea9f8380791840dada3d82b611fe",
|
||||
"testharness"
|
||||
],
|
||||
"webxr/xrWebGLLayer_framebuffer_draw.https.html": [
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[xrDevice_requestSession_immersive_no_gesture.https.html]
|
||||
[Requesting immersive session outside of a user gesture rejects]
|
||||
expected: FAIL
|
||||
|
|
@ -7658,9 +7658,6 @@
|
|||
]
|
||||
]
|
||||
},
|
||||
"stub": {
|
||||
"css/blockify_inline_element.html": []
|
||||
},
|
||||
"support": {
|
||||
".gitignore": [
|
||||
[]
|
||||
|
@ -19747,11 +19744,11 @@
|
|||
"testharness"
|
||||
],
|
||||
"webxr/create_session.html": [
|
||||
"e68ea81893a65793094f9086cdd6d73800ee1c14",
|
||||
"af76c5a812d7d05a0158194560933def3fbdb9f9",
|
||||
"testharness"
|
||||
],
|
||||
"webxr/obtain_frame.html": [
|
||||
"39698805b476c7e469548d25ece59560a596604d",
|
||||
"74fda5bad43e8ea95552e65380e83952680e8469",
|
||||
"testharness"
|
||||
],
|
||||
"webxr/resources/webxr-util.js": [
|
||||
|
|
|
@ -12,7 +12,11 @@
|
|||
views: TEST_VIEWS,
|
||||
viewerOrigin: {position: [0.5, 0.1, 0.1], orientation: [1, 0, 0, 1] }
|
||||
}).then((m) => {
|
||||
return navigator.xr.requestSession("immersive-vr")
|
||||
let sessionPromise;
|
||||
navigator.xr.test.simulateUserActivation(() => {
|
||||
sessionPromise = navigator.xr.requestSession("immersive-vr")
|
||||
});
|
||||
return sessionPromise;
|
||||
}).then(() => t.done());
|
||||
});
|
||||
</script>
|
||||
|
|
|
@ -16,7 +16,11 @@
|
|||
views: TEST_VIEWS,
|
||||
viewerOrigin: {position: [0.5, 0.1, 0.1], orientation: [1, 0, 0, 1] }
|
||||
});
|
||||
let session = await navigator.xr.requestSession("immersive-vr");
|
||||
let sessionPromise;
|
||||
navigator.xr.test.simulateUserActivation(() => {
|
||||
sessionPromise = navigator.xr.requestSession("immersive-vr");
|
||||
});
|
||||
let session = await sessionPromise;
|
||||
await session.updateRenderState({"baseLayer": new XRWebGLLayer(session, gl, {})});
|
||||
let resolve;
|
||||
|
||||
|
|
|
@ -17,8 +17,11 @@ xr_promise_test("Ensure that XRWebGLLayer's constructor throws appropriate error
|
|||
let gl = webglCanvas.getContext('webgl', glAttributes);
|
||||
return navigator.xr.test.simulateDeviceConnection(TRACKED_IMMERSIVE_DEVICE)
|
||||
.then(() => {
|
||||
return navigator.xr.requestSession('inline')
|
||||
.then((session) => {
|
||||
let sessionPromise;
|
||||
navigator.xr.test.simulateUserActivation(function() {
|
||||
sessionPromise = navigator.xr.requestSession('inline');
|
||||
});
|
||||
return sessionPromise.then((session) => {
|
||||
try {
|
||||
let webglLayerIncompatible = new XRWebGLLayer(session, gl);
|
||||
} catch (err) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue