aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/fakexrinputcontroller.rs
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2020-01-13 15:13:08 +0530
committerManish Goregaokar <manishsmail@gmail.com>2020-01-21 15:47:30 -0800
commit9c34a6585b50b7c20468060dafca717d1d363e6c (patch)
tree8161e4603b6e7f2f737bdc8296f4e6879f6d86c1 /components/script/dom/fakexrinputcontroller.rs
parente9221e6ce02b4fc16676bda2895105bea8e95e7f (diff)
downloadservo-9c34a6585b50b7c20468060dafca717d1d363e6c.tar.gz
servo-9c34a6585b50b7c20468060dafca717d1d363e6c.zip
Handle SetTargetRayMode and SetHandedness
Diffstat (limited to 'components/script/dom/fakexrinputcontroller.rs')
-rw-r--r--components/script/dom/fakexrinputcontroller.rs27
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));
+ }
}