diff options
-rw-r--r-- | components/script/dom/fakexrdevice.rs | 15 | ||||
-rw-r--r-- | components/script/dom/webidls/FakeXRDevice.webidl | 8 |
2 files changed, 14 insertions, 9 deletions
diff --git a/components/script/dom/fakexrdevice.rs b/components/script/dom/fakexrdevice.rs index bb73580e98a..d193c095717 100644 --- a/components/script/dom/fakexrdevice.rs +++ b/components/script/dom/fakexrdevice.rs @@ -5,6 +5,7 @@ use crate::dom::bindings::codegen::Bindings::FakeXRDeviceBinding::{ self, FakeXRDeviceMethods, FakeXRRigidTransformInit, FakeXRViewInit, }; +use crate::dom::bindings::codegen::Bindings::XRSessionBinding::XRVisibilityState; use crate::dom::bindings::codegen::Bindings::XRViewBinding::XREye; use crate::dom::bindings::error::{Error, Fallible}; use crate::dom::bindings::refcounted::TrustedPromise; @@ -20,7 +21,7 @@ use ipc_channel::ipc::IpcSender; use ipc_channel::router::ROUTER; use profile_traits::ipc; use std::rc::Rc; -use webxr_api::{MockDeviceMsg, MockViewInit, MockViewsInit}; +use webxr_api::{MockDeviceMsg, MockViewInit, MockViewsInit, Visibility}; #[dom_struct] pub struct FakeXRDevice { @@ -163,7 +164,17 @@ impl FakeXRDeviceMethods for FakeXRDevice { Ok(()) } - /// https://github.com/immersive-web/webxr-test-api/blob/master/explainer.md + /// https://immersive-web.github.io/webxr-test-api/#dom-fakexrdevice-simulatevisibilitychange + fn SimulateVisibilityChange(&self, v: XRVisibilityState) { + let v = match v { + XRVisibilityState::Visible => Visibility::Visible, + XRVisibilityState::Visible_blurred => Visibility::VisibleBlurred, + XRVisibilityState::Hidden => Visibility::Hidden, + }; + let _ = self.sender.send(MockDeviceMsg::VisibilityChange(v)); + } + + /// https://immersive-web.github.io/webxr-test-api/#dom-fakexrdevice-disconnect fn Disconnect(&self) -> Rc<Promise> { let global = self.global(); let p = Promise::new(&global); diff --git a/components/script/dom/webidls/FakeXRDevice.webidl b/components/script/dom/webidls/FakeXRDevice.webidl index 4dde2678435..8d981c4182a 100644 --- a/components/script/dom/webidls/FakeXRDevice.webidl +++ b/components/script/dom/webidls/FakeXRDevice.webidl @@ -10,9 +10,6 @@ interface FakeXRDevice { // requestAnimationFrame() callbacks. [Throws] void setViews(sequence<FakeXRViewInit> views); - // // behaves as if device was disconnected - // Promise<void> disconnect(); - [Throws] void setViewerOrigin(FakeXRRigidTransformInit origin, optional boolean emulatedPosition = false); void clearViewerOrigin(); @@ -20,12 +17,9 @@ interface FakeXRDevice { void clearFloorOrigin(); // // Simulates devices focusing and blurring sessions. - // void simulateVisibilityChange(XRVisibilityState); + void simulateVisibilityChange(XRVisibilityState state); // void setBoundsGeometry(sequence<FakeXRBoundsPoint> boundsCoodinates); - // // Sets eye level used for calculating floor-level spaces - // void setEyeLevel(float eyeLevel); - // Promise<FakeXRInputController> // simulateInputSourceConnection(FakeXRInputSourceInit); |