diff options
-rw-r--r-- | components/script/dom/webidls/XR.webidl | 10 | ||||
-rw-r--r-- | components/script/dom/xr.rs | 13 | ||||
-rw-r--r-- | tests/wpt/mozilla/meta/MANIFEST.json | 4 | ||||
-rw-r--r-- | tests/wpt/mozilla/tests/webxr/create_session.html | 2 | ||||
-rw-r--r-- | tests/wpt/mozilla/tests/webxr/obtain_frame.html | 2 |
5 files changed, 16 insertions, 15 deletions
diff --git a/components/script/dom/webidls/XR.webidl b/components/script/dom/webidls/XR.webidl index 0b3debeaee6..2bee5c07cd8 100644 --- a/components/script/dom/webidls/XR.webidl +++ b/components/script/dom/webidls/XR.webidl @@ -6,8 +6,8 @@ [SecureContext, Exposed=Window, Pref="dom.webxr.enabled"] interface XR: EventTarget { // Methods - Promise<void> supportsSessionMode(XRSessionMode mode); - Promise<XRSession> requestSession(optional XRSessionCreationOptions parameters = {}); + Promise<void> supportsSession(XRSessionMode mode); + Promise<XRSession> requestSession(XRSessionMode mode, optional XRSessionInit parameters = {}); // Events // attribute EventHandler ondevicechange; @@ -24,9 +24,9 @@ enum XRSessionMode { "immersive-ar" }; -dictionary XRSessionCreationOptions { - XRSessionMode mode = "inline"; - // XRPresentationContext outputContext; +dictionary XRSessionInit { + sequence<DOMString> requiredFeatures; + sequence<DOMString> optionalFeatures; }; partial interface XR { diff --git a/components/script/dom/xr.rs b/components/script/dom/xr.rs index e28e8a27249..1ddf93c7a23 100644 --- a/components/script/dom/xr.rs +++ b/components/script/dom/xr.rs @@ -6,7 +6,7 @@ use crate::compartments::InCompartment; use crate::dom::bindings::cell::DomRefCell; use crate::dom::bindings::codegen::Bindings::VRDisplayBinding::VRDisplayMethods; use crate::dom::bindings::codegen::Bindings::XRBinding; -use crate::dom::bindings::codegen::Bindings::XRBinding::XRSessionCreationOptions; +use crate::dom::bindings::codegen::Bindings::XRBinding::XRSessionInit; use crate::dom::bindings::codegen::Bindings::XRBinding::{XRMethods, XRSessionMode}; use crate::dom::bindings::error::Error; use crate::dom::bindings::inheritance::Castable; @@ -96,7 +96,7 @@ impl Into<SessionMode> for XRSessionMode { impl XRMethods for XR { /// https://immersive-web.github.io/webxr/#dom-xr-supportssessionmode - fn SupportsSessionMode(&self, mode: XRSessionMode, comp: InCompartment) -> Rc<Promise> { + fn SupportsSession(&self, mode: XRSessionMode) -> Rc<Promise> { #[derive(serde::Serialize, serde::Deserialize)] pub struct SupportsSession { sender: IpcSender<bool>, @@ -110,7 +110,7 @@ impl XRMethods for XR { } // XXXManishearth this should select an XR device first - let promise = Promise::new_in_current_compartment(&self.global(), comp); + let promise = Promise::new(&self.global()); let mut trusted = Some(TrustedPromise::new(promise.clone())); let global = self.global(); let window = global.as_window(); @@ -152,7 +152,8 @@ impl XRMethods for XR { /// https://immersive-web.github.io/webxr/#dom-xr-requestsession fn RequestSession( &self, - options: &XRSessionCreationOptions, + mode: XRSessionMode, + _: &XRSessionInit, comp: InCompartment, ) -> Rc<Promise> { #[derive(serde::Serialize, serde::Deserialize)] @@ -167,7 +168,7 @@ impl XRMethods for XR { } } let promise = Promise::new_in_current_compartment(&self.global(), comp); - if options.mode != XRSessionMode::Immersive_vr { + if mode != XRSessionMode::Immersive_vr { promise.reject_error(Error::NotSupported); return promise; } @@ -210,7 +211,7 @@ impl XRMethods for XR { ); window .webxr_registry() - .request_session(options.mode.into(), RequestSession { sender }); + .request_session(mode.into(), RequestSession { sender }); promise } diff --git a/tests/wpt/mozilla/meta/MANIFEST.json b/tests/wpt/mozilla/meta/MANIFEST.json index 4f86e9942ef..39eaca61b93 100644 --- a/tests/wpt/mozilla/meta/MANIFEST.json +++ b/tests/wpt/mozilla/meta/MANIFEST.json @@ -19690,11 +19690,11 @@ "testharness" ], "webxr/create_session.html": [ - "ddec5add27b84e8e2febe3789d326f1e9fb7f508", + "e68ea81893a65793094f9086cdd6d73800ee1c14", "testharness" ], "webxr/obtain_frame.html": [ - "063008c7ebc0df9997b8286296b4f7fe4663b331", + "39698805b476c7e469548d25ece59560a596604d", "testharness" ], "webxr/resources/webxr-util.js": [ diff --git a/tests/wpt/mozilla/tests/webxr/create_session.html b/tests/wpt/mozilla/tests/webxr/create_session.html index ddec5add27b..e68ea81893a 100644 --- a/tests/wpt/mozilla/tests/webxr/create_session.html +++ b/tests/wpt/mozilla/tests/webxr/create_session.html @@ -12,7 +12,7 @@ views: TEST_VIEWS, viewerOrigin: {position: [0.5, 0.1, 0.1], orientation: [1, 0, 0, 1] } }).then((m) => { - return navigator.xr.requestSession({mode: "immersive-vr"}) + return navigator.xr.requestSession("immersive-vr") }).then(() => t.done()); }); </script> diff --git a/tests/wpt/mozilla/tests/webxr/obtain_frame.html b/tests/wpt/mozilla/tests/webxr/obtain_frame.html index 063008c7ebc..39698805b47 100644 --- a/tests/wpt/mozilla/tests/webxr/obtain_frame.html +++ b/tests/wpt/mozilla/tests/webxr/obtain_frame.html @@ -16,7 +16,7 @@ views: TEST_VIEWS, viewerOrigin: {position: [0.5, 0.1, 0.1], orientation: [1, 0, 0, 1] } }); - let session = await navigator.xr.requestSession({mode: "immersive-vr"}); + let session = await navigator.xr.requestSession("immersive-vr"); await session.updateRenderState({"baseLayer": new XRWebGLLayer(session, gl, {})}); let resolve; |