diff --git a/components/script/dom/webidls/XRRigidTransform.webidl b/components/script/dom/webidls/XRRigidTransform.webidl index 2131ec22356..8d9d9a4f5ba 100644 --- a/components/script/dom/webidls/XRRigidTransform.webidl +++ b/components/script/dom/webidls/XRRigidTransform.webidl @@ -10,5 +10,5 @@ interface XRRigidTransform { readonly attribute DOMPointReadOnly position; readonly attribute DOMPointReadOnly orientation; // readonly attribute Float32Array matrix; - XRRigidTransform inverse(); + readonly attribute XRRigidTransform inverse; }; diff --git a/components/script/dom/xrrigidtransform.rs b/components/script/dom/xrrigidtransform.rs index be27d20d6ee..0bebba280a9 100644 --- a/components/script/dom/xrrigidtransform.rs +++ b/components/script/dom/xrrigidtransform.rs @@ -23,6 +23,7 @@ pub struct XRRigidTransform { orientation: MutNullableDom, #[ignore_malloc_size_of = "defined in euclid"] transform: RigidTransform3D, + inverse: MutNullableDom, } impl XRRigidTransform { @@ -32,6 +33,7 @@ impl XRRigidTransform { position: MutNullableDom::default(), orientation: MutNullableDom::default(), transform, + inverse: MutNullableDom::default(), } } @@ -93,7 +95,9 @@ impl XRRigidTransformMethods for XRRigidTransform { } // https://immersive-web.github.io/webxr/#dom-xrrigidtransform-inverse fn Inverse(&self) -> DomRoot { - XRRigidTransform::new(&self.global(), self.transform.inverse()) + self.inverse.or_init(|| { + XRRigidTransform::new(&self.global(), self.transform.inverse()) + }) } }