diff --git a/components/script/dom/webidls/XRTest.webidl b/components/script/dom/webidls/XRTest.webidl index 0071e4338b3..1ae98f703bf 100644 --- a/components/script/dom/webidls/XRTest.webidl +++ b/components/script/dom/webidls/XRTest.webidl @@ -20,7 +20,9 @@ interface XRTest { }; dictionary FakeXRDeviceInit { - required boolean supportsImmersive; + boolean supportsImmersive = false; + sequence supportedModes; + required sequence views; // this is actually sequence, but we don't support diff --git a/components/script/dom/xrtest.rs b/components/script/dom/xrtest.rs index 114260b89d9..37707c3ce8e 100644 --- a/components/script/dom/xrtest.rs +++ b/components/script/dom/xrtest.rs @@ -9,6 +9,7 @@ use crate::dom::bindings::callback::ExceptionHandling; use crate::dom::bindings::cell::DomRefCell; use crate::dom::bindings::codegen::Bindings::FunctionBinding::Function; +use crate::dom::bindings::codegen::Bindings::XRSystemBinding::XRSessionMode; use crate::dom::bindings::codegen::Bindings::XRTestBinding::{FakeXRDeviceInit, XRTestMethods}; use crate::dom::bindings::refcounted::{Trusted, TrustedPromise}; use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; @@ -119,12 +120,24 @@ impl XRTestMethods for XRTest { None }; + let (mut supports_inline, mut supports_vr, mut supports_ar) = (false, false, false); + + if let Some(ref modes) = init.supportedModes { + for mode in modes { + match mode { + XRSessionMode::Immersive_vr => supports_vr = true, + XRSessionMode::Immersive_ar => supports_ar = true, + XRSessionMode::Inline => supports_inline = true, + } + } + } + let init = MockDeviceInit { viewer_origin: origin, views, - supports_inline: false, - supports_vr: init.supportsImmersive, - supports_ar: false, + supports_inline, + supports_vr, + supports_ar, floor_origin, supported_features, world, diff --git a/tests/wpt/metadata/webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html.ini b/tests/wpt/metadata/webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html.ini deleted file mode 100644 index 178edb6ed13..00000000000 --- a/tests/wpt/metadata/webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[xrDevice_isSessionSupported_immersive-ar.https.html] - [isSessionSupported resolves to false for immersive-ar on an unsupported device] - expected: FAIL - diff --git a/tests/wpt/metadata/webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html.ini b/tests/wpt/metadata/webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html.ini deleted file mode 100644 index 956d3ed136a..00000000000 --- a/tests/wpt/metadata/webxr/ar-module/xrDevice_requestSession_immersive-ar.https.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[xrDevice_requestSession_immersive-ar.https.html] - [Tests requestSession rejects immersive-ar mode when unsupported] - expected: FAIL - diff --git a/tests/wpt/metadata/webxr/dom-overlay/ar_dom_overlay.https.html.ini b/tests/wpt/metadata/webxr/dom-overlay/ar_dom_overlay.https.html.ini index 224197c5a20..5e168fd4be5 100644 --- a/tests/wpt/metadata/webxr/dom-overlay/ar_dom_overlay.https.html.ini +++ b/tests/wpt/metadata/webxr/dom-overlay/ar_dom_overlay.https.html.ini @@ -1,4 +1,5 @@ [ar_dom_overlay.https.html] + expected: ERROR [Ensures DOM Overlay element selection works] expected: FAIL @@ -6,7 +7,7 @@ expected: FAIL [Ensures DOM Overlay input deduplication works] - expected: FAIL + expected: TIMEOUT [Ensures DOM Overlay feature works for immersive-ar, body element] expected: FAIL @@ -15,11 +16,11 @@ expected: FAIL [Ensures DOM Overlay Fullscreen API doesn't change DOM overlay] - expected: FAIL + expected: NOTRUN [Ensures DOM Overlay feature works for immersive-ar, div element] expected: FAIL [Ensures DOM Overlay interactions on cross origin iframe are ignored] - expected: FAIL + expected: NOTRUN diff --git a/tests/wpt/metadata/webxr/dom-overlay/ar_dom_overlay_hit_test.https.html.ini b/tests/wpt/metadata/webxr/dom-overlay/ar_dom_overlay_hit_test.https.html.ini index 39d3a1c94ce..26ed26f69c2 100644 --- a/tests/wpt/metadata/webxr/dom-overlay/ar_dom_overlay_hit_test.https.html.ini +++ b/tests/wpt/metadata/webxr/dom-overlay/ar_dom_overlay_hit_test.https.html.ini @@ -1,2 +1,4 @@ [ar_dom_overlay_hit_test.https.html] - expected: ERROR + [Ensures DOM Overlay interactions on cross origin iframe do not cause hit test results to come up] + expected: FAIL + diff --git a/tests/wpt/mozilla/meta/MANIFEST.json b/tests/wpt/mozilla/meta/MANIFEST.json index 43a57321277..a40590440ef 100644 --- a/tests/wpt/mozilla/meta/MANIFEST.json +++ b/tests/wpt/mozilla/meta/MANIFEST.json @@ -14609,21 +14609,21 @@ }, "webxr": { "create_session.html": [ - "af76c5a812d7d05a0158194560933def3fbdb9f9", + "5b5d485b372bfffb22204bc162c9e182306395cb", [ null, {} ] ], "layers.html": [ - "31f4b6bd51cfcca47666331857bd2bbdf84d2f5e", + "49821d7661f92bc9cf22232d3fcb391c2cdc7295", [ null, {} ] ], "obtain_frame.html": [ - "74fda5bad43e8ea95552e65380e83952680e8469", + "d9ff25729f9cdfd348e7c9914ce2dacd231e13a0", [ null, {} diff --git a/tests/wpt/mozilla/tests/webxr/create_session.html b/tests/wpt/mozilla/tests/webxr/create_session.html index af76c5a812d..5b5d485b372 100644 --- a/tests/wpt/mozilla/tests/webxr/create_session.html +++ b/tests/wpt/mozilla/tests/webxr/create_session.html @@ -8,7 +8,7 @@