aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/xrrigidtransform.rs
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2019-04-03 00:25:44 -0700
committerManish Goregaokar <manishsmail@gmail.com>2019-04-03 23:55:33 -0700
commit1f3f37225f2f2b10bdffe171d8300ab2c9aad7f2 (patch)
treea6395d76ce9b2f75d369312c4f95b03c89a5f704 /components/script/dom/xrrigidtransform.rs
parente296185c53bda022c0c010c334238b9bc7b70f83 (diff)
downloadservo-1f3f37225f2f2b10bdffe171d8300ab2c9aad7f2.tar.gz
servo-1f3f37225f2f2b10bdffe171d8300ab2c9aad7f2.zip
Validate the position passed to XRRigidTransform
Added in https://github.com/immersive-web/webxr/pull/568
Diffstat (limited to 'components/script/dom/xrrigidtransform.rs')
-rw-r--r--components/script/dom/xrrigidtransform.rs9
1 files changed, 8 insertions, 1 deletions
diff --git a/components/script/dom/xrrigidtransform.rs b/components/script/dom/xrrigidtransform.rs
index 8f3fe767f6e..98ca2c11239 100644
--- a/components/script/dom/xrrigidtransform.rs
+++ b/components/script/dom/xrrigidtransform.rs
@@ -5,6 +5,7 @@
use crate::dom::bindings::codegen::Bindings::DOMPointBinding::DOMPointInit;
use crate::dom::bindings::codegen::Bindings::XRRigidTransformBinding;
use crate::dom::bindings::codegen::Bindings::XRRigidTransformBinding::XRRigidTransformMethods;
+use crate::dom::bindings::error::Error;
use crate::dom::bindings::error::Fallible;
use crate::dom::bindings::reflector::DomObject;
use crate::dom::bindings::reflector::{reflect_dom_object, Reflector};
@@ -54,7 +55,13 @@ impl XRRigidTransform {
position: &DOMPointInit,
orientation: &DOMPointInit,
) -> Fallible<DomRoot<Self>> {
- let global = window.global();
+ if position.w != 1.0 {
+ return Err(Error::Type(format!(
+ "XRRigidTransform must be constructed with a position that has a w value of of 1.0, not {}",
+ position.w
+ )));
+ }
+
let translate = Vector3D::new(position.x as f64, position.y as f64, position.z as f64);
let rotate = Rotation3D::unit_quaternion(
orientation.x as f64,