diff options
author | Manish Goregaokar <manishsmail@gmail.com> | 2020-01-08 17:15:46 +0530 |
---|---|---|
committer | Manish Goregaokar <manishsmail@gmail.com> | 2020-01-09 08:16:25 +0530 |
commit | e03fd0ef1c40e8840e59c15e649c102e7f80b81d (patch) | |
tree | d96c3bf731934f5cfa6537599ee5dd1c1d67b275 /components/script/dom/fakexrinputcontroller.rs | |
parent | 506a0afca32ef802d1fa69d303297b2b6b095629 (diff) | |
download | servo-e03fd0ef1c40e8840e59c15e649c102e7f80b81d.tar.gz servo-e03fd0ef1c40e8840e59c15e649c102e7f80b81d.zip |
Add pointer/grip mocking
Diffstat (limited to 'components/script/dom/fakexrinputcontroller.rs')
-rw-r--r-- | components/script/dom/fakexrinputcontroller.rs | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/components/script/dom/fakexrinputcontroller.rs b/components/script/dom/fakexrinputcontroller.rs index 274039c2fd2..63c0084fb6e 100644 --- a/components/script/dom/fakexrinputcontroller.rs +++ b/components/script/dom/fakexrinputcontroller.rs @@ -2,13 +2,18 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -use crate::dom::bindings::codegen::Bindings::FakeXRInputControllerBinding::{self}; +use crate::dom::bindings::codegen::Bindings::FakeXRDeviceBinding::FakeXRRigidTransformInit; +use crate::dom::bindings::codegen::Bindings::FakeXRInputControllerBinding::{ + self, FakeXRInputControllerMethods, +}; +use crate::dom::bindings::error::Fallible; use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; use crate::dom::bindings::root::DomRoot; +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}; +use webxr_api::{InputId, MockDeviceMsg, MockInputMsg}; #[dom_struct] pub struct FakeXRInputController { @@ -39,4 +44,29 @@ impl FakeXRInputController { FakeXRInputControllerBinding::Wrap, ) } + + fn send_message(&self, msg: MockInputMsg) { + let _ = self + .sender + .send(MockDeviceMsg::MessageInputSource(self.id, msg)); + } +} + +impl FakeXRInputControllerMethods for FakeXRInputController { + /// https://immersive-web.github.io/webxr-test-api/#dom-fakexrinputcontroller-setpointerorigin + fn SetPointerOrigin(&self, origin: &FakeXRRigidTransformInit, _emulated: bool) -> Fallible<()> { + self.send_message(MockInputMsg::SetPointerOrigin(Some(get_origin(origin)?))); + Ok(()) + } + + /// https://immersive-web.github.io/webxr-test-api/#dom-fakexrinputcontroller-setgriporigin + fn SetGripOrigin(&self, origin: &FakeXRRigidTransformInit, _emulated: bool) -> Fallible<()> { + self.send_message(MockInputMsg::SetGripOrigin(Some(get_origin(origin)?))); + Ok(()) + } + + /// https://immersive-web.github.io/webxr-test-api/#dom-fakexrinputcontroller-cleargriporigin + fn ClearGripOrigin(&self) { + self.send_message(MockInputMsg::SetGripOrigin(None)) + } } |