aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2019-05-29 17:15:25 -0700
committerManish Goregaokar <manishsmail@gmail.com>2019-05-30 19:04:08 -0700
commit97df39fce1af449ac73707f6c2ba6cba18ae05a4 (patch)
tree46324057be078e4ebeef1a0ea76d072a62d538ce /components/script/dom
parent4b930b9e305ff67f26f19cb8bd70430a1d4fff1c (diff)
downloadservo-97df39fce1af449ac73707f6c2ba6cba18ae05a4.tar.gz
servo-97df39fce1af449ac73707f6c2ba6cba18ae05a4.zip
Add FakeXRDeviceController.setViewerOrigin()
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/fakexrdevicecontroller.rs21
-rw-r--r--components/script/dom/webidls/FakeXRDeviceController.webidl2
2 files changed, 19 insertions, 4 deletions
diff --git a/components/script/dom/fakexrdevicecontroller.rs b/components/script/dom/fakexrdevicecontroller.rs
index f690a1bcc43..bd33d34aea1 100644
--- a/components/script/dom/fakexrdevicecontroller.rs
+++ b/components/script/dom/fakexrdevicecontroller.rs
@@ -7,7 +7,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
use crate::dom::bindings::codegen::Bindings::FakeXRDeviceControllerBinding::{
- self, FakeXRDeviceControllerMethods, FakeXRViewInit,
+ self, FakeXRDeviceControllerMethods, FakeXRRigidTransform, FakeXRViewInit,
};
use crate::dom::bindings::codegen::Bindings::XRViewBinding::XREye;
use crate::dom::bindings::error::{Error, Fallible};
@@ -42,7 +42,8 @@ impl FakeXRDeviceController {
.as_window()
.webvr_thread()
.unwrap()
- .send(WebVRMsg::MessageMockDisplay(msg));
+ .send(WebVRMsg::MessageMockDisplay(msg))
+ .unwrap();
}
}
@@ -64,7 +65,7 @@ impl FakeXRDeviceControllerMethods for FakeXRDeviceController {
left.viewOffset.position.len() != 4 ||
right.viewOffset.position.len() != 4
{
- return Err(Error::Type("Incorrectly sized matrix".into()));
+ return Err(Error::Type("Incorrectly sized array".into()));
}
let mut proj_l = [0.; 16];
@@ -85,4 +86,18 @@ impl FakeXRDeviceControllerMethods for FakeXRDeviceController {
self.send_msg(MockVRControlMsg::SetEyeParameters(params_l, params_r));
Ok(())
}
+
+ fn SetViewerOrigin(&self, origin: &FakeXRRigidTransform) -> Fallible<()> {
+ if origin.position.len() != 4 || origin.orientation.len() != 4 {
+ return Err(Error::Type("Incorrectly sized array".into()));
+ }
+ let mut position = [0.; 3];
+ let mut orientation = [0.; 4];
+ let v: Vec<_> = origin.position.iter().map(|x| **x).collect();
+ position.copy_from_slice(&v[0..3]);
+ let v: Vec<_> = origin.orientation.iter().map(|x| **x).collect();
+ orientation.copy_from_slice(&v);
+ self.send_msg(MockVRControlMsg::SetViewerPose(position, orientation));
+ Ok(())
+ }
}
diff --git a/components/script/dom/webidls/FakeXRDeviceController.webidl b/components/script/dom/webidls/FakeXRDeviceController.webidl
index 723088096a0..cacdb2f9819 100644
--- a/components/script/dom/webidls/FakeXRDeviceController.webidl
+++ b/components/script/dom/webidls/FakeXRDeviceController.webidl
@@ -13,7 +13,7 @@ interface FakeXRDeviceController {
// // requestAnimationFrame() callbacks.
[Throws] void setViews(sequence<FakeXRViewInit> views);
- // void setViewerOrigin(FakeXRRigidTransform origin);
+ [Throws] void setViewerOrigin(FakeXRRigidTransform origin);
// Simulates the user activating the reset pose on a device.
// void simulateResetPose();