diff options
Diffstat (limited to 'components/script/dom/fakexrinputcontroller.rs')
-rw-r--r-- | components/script/dom/fakexrinputcontroller.rs | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/components/script/dom/fakexrinputcontroller.rs b/components/script/dom/fakexrinputcontroller.rs index 67e6f72cf70..7c145a3ed20 100644 --- a/components/script/dom/fakexrinputcontroller.rs +++ b/components/script/dom/fakexrinputcontroller.rs @@ -6,6 +6,9 @@ use crate::dom::bindings::codegen::Bindings::FakeXRDeviceBinding::FakeXRRigidTra use crate::dom::bindings::codegen::Bindings::FakeXRInputControllerBinding::{ self, FakeXRInputControllerMethods, }; +use crate::dom::bindings::codegen::Bindings::XRInputSourceBinding::{ + XRHandedness, XRTargetRayMode, +}; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::DomRoot; @@ -13,7 +16,9 @@ use crate::dom::fakexrdevice::get_origin; use crate::dom::globalscope::GlobalScope; use dom_struct::dom_struct; use ipc_channel::ipc::IpcSender; -use webxr_api::{InputId, MockDeviceMsg, MockInputMsg, SelectEvent, SelectKind}; +use webxr_api::{ + Handedness, InputId, MockDeviceMsg, MockInputMsg, SelectEvent, SelectKind, TargetRayMode, +}; #[dom_struct] pub struct FakeXRInputController { @@ -103,4 +108,24 @@ impl FakeXRInputControllerMethods for FakeXRInputController { SelectEvent::Select, )) } + + /// https://immersive-web.github.io/webxr-test-api/#dom-fakexrinputcontroller-sethandedness + fn SetHandedness(&self, handedness: XRHandedness) { + let h = match handedness { + XRHandedness::None => Handedness::None, + XRHandedness::Left => Handedness::Left, + XRHandedness::Right => Handedness::Right, + }; + let _ = self.send_message(MockInputMsg::SetHandedness(h)); + } + + /// https://immersive-web.github.io/webxr-test-api/#dom-fakexrinputcontroller-settargetraymode + fn SetTargetRayMode(&self, target_ray_mode: XRTargetRayMode) { + let t = match target_ray_mode { + XRTargetRayMode::Gaze => TargetRayMode::Gaze, + XRTargetRayMode::Tracked_pointer => TargetRayMode::TrackedPointer, + XRTargetRayMode::Screen => TargetRayMode::Screen, + }; + let _ = self.send_message(MockInputMsg::SetTargetRayMode(t)); + } } |