mirror of
https://github.com/servo/servo.git
synced 2025-07-29 18:20:24 +01:00
Add pointer/grip mocking
This commit is contained in:
parent
506a0afca3
commit
e03fd0ef1c
2 changed files with 35 additions and 5 deletions
|
@ -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))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,9 +9,9 @@ interface FakeXRInputController {
|
|||
// void setHandedness(XRHandedness handedness);
|
||||
// void setTargetRayMode(XRTargetRayMode targetRayMode);
|
||||
// void setProfiles(sequence<DOMString> profiles);
|
||||
// void setGripOrigin(FakeXRRigidTransformInit gripOrigin, optional boolean emulatedPosition = false);
|
||||
// void clearGripOrigin();
|
||||
// void setPointerOrigin(FakeXRRigidTransformInit pointerOrigin, optional boolean emulatedPosition = false);
|
||||
[Throws] void setGripOrigin(FakeXRRigidTransformInit gripOrigin, optional boolean emulatedPosition = false);
|
||||
void clearGripOrigin();
|
||||
[Throws] void setPointerOrigin(FakeXRRigidTransformInit pointerOrigin, optional boolean emulatedPosition = false);
|
||||
|
||||
// void disconnect();
|
||||
// void reconnect();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue