diff --git a/components/script/dom/webidls/XR.webidl b/components/script/dom/webidls/XR.webidl index 4a6bca26a69..58732edd42b 100644 --- a/components/script/dom/webidls/XR.webidl +++ b/components/script/dom/webidls/XR.webidl @@ -28,3 +28,8 @@ dictionary XRSessionCreationOptions { XRSessionMode mode = "inline"; // XRPresentationContext outputContext; }; + +partial interface XR { + // https://github.com/immersive-web/webxr-test-api/ + [SameObject, Pref="dom.webxr.test"] readonly attribute XRTest test; +}; diff --git a/components/script/dom/xr.rs b/components/script/dom/xr.rs index 3ff67b0042c..1626ad4e00e 100644 --- a/components/script/dom/xr.rs +++ b/components/script/dom/xr.rs @@ -21,6 +21,7 @@ use crate::dom::promise::Promise; use crate::dom::vrdisplay::VRDisplay; use crate::dom::vrdisplayevent::VRDisplayEvent; use crate::dom::xrsession::XRSession; +use crate::dom::xrtest::XRTest; use dom_struct::dom_struct; use ipc_channel::ipc::IpcSender; use profile_traits::ipc; @@ -36,6 +37,7 @@ pub struct XR { gamepads: DomRefCell>>, pending_immersive_session: Cell, active_immersive_session: MutNullableDom, + test: MutNullableDom, } impl XR { @@ -46,6 +48,7 @@ impl XR { gamepads: DomRefCell::new(Vec::new()), pending_immersive_session: Cell::new(false), active_immersive_session: Default::default(), + test: Default::default(), } } @@ -141,6 +144,11 @@ impl XRMethods for XR { session.xr_present(promise.clone()); promise } + + // https://github.com/immersive-web/webxr-test-api/blob/master/explainer.md + fn Test(&self) -> DomRoot { + self.test.or_init(|| XRTest::new(&self.global())) + } } impl XR { diff --git a/python/tidy/servo_tidy/tidy.py b/python/tidy/servo_tidy/tidy.py index 35ebcb656db..0fdda070899 100644 --- a/python/tidy/servo_tidy/tidy.py +++ b/python/tidy/servo_tidy/tidy.py @@ -98,6 +98,7 @@ WEBIDL_STANDARDS = [ "//wicg.github.io", "//webaudio.github.io", "//immersive-web.github.io/", + "//github.com/immersive-web/webxr-test-api/", # Not a URL "// This interface is entirely internal to Servo, and should not be" + " accessible to\n// web pages."