From 0756923e526dca922296a8a27af92234cd2ed544 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Mon, 29 Apr 2019 20:59:52 -0700 Subject: [PATCH] Make viewerSpace [SameObject] --- components/script/dom/webidls/XRSession.webidl | 2 +- components/script/dom/xrsession.rs | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/components/script/dom/webidls/XRSession.webidl b/components/script/dom/webidls/XRSession.webidl index 798a8f7b7ae..0399f2d0bc1 100644 --- a/components/script/dom/webidls/XRSession.webidl +++ b/components/script/dom/webidls/XRSession.webidl @@ -20,7 +20,7 @@ interface XRSession : EventTarget { readonly attribute XREnvironmentBlendMode environmentBlendMode; readonly attribute XRRenderState renderState; - readonly attribute XRSpace viewerSpace; + [SameObject] readonly attribute XRSpace viewerSpace; // // Methods Promise requestReferenceSpace(XRReferenceSpaceOptions options); diff --git a/components/script/dom/xrsession.rs b/components/script/dom/xrsession.rs index 67c7a10e36c..5aab6341ca4 100644 --- a/components/script/dom/xrsession.rs +++ b/components/script/dom/xrsession.rs @@ -34,6 +34,7 @@ pub struct XRSession { display: Dom, base_layer: MutNullableDom, blend_mode: XREnvironmentBlendMode, + viewer_space: MutNullableDom, } impl XRSession { @@ -44,6 +45,7 @@ impl XRSession { base_layer: Default::default(), // we don't yet support any AR devices blend_mode: XREnvironmentBlendMode::Opaque, + viewer_space: Default::default(), } } @@ -87,7 +89,8 @@ impl XRSessionMethods for XRSession { // https://immersive-web.github.io/webxr/#dom-xrsession-viewerspace fn ViewerSpace(&self) -> DomRoot { - XRSpace::new_viewerspace(&self.global(), &self) + self.viewer_space + .or_init(|| XRSpace::new_viewerspace(&self.global(), &self)) } /// https://immersive-web.github.io/webxr/#dom-xrsession-requestanimationframe