diff --git a/components/script/dom/mod.rs b/components/script/dom/mod.rs index 89c36a7a08e..aae84c5bdd5 100644 --- a/components/script/dom/mod.rs +++ b/components/script/dom/mod.rs @@ -524,5 +524,6 @@ pub mod xrreferencespace; pub mod xrsession; pub mod xrspace; pub mod xrstationaryreferencespace; +pub mod xrview; pub mod xrviewerpose; pub mod xrwebgllayer; diff --git a/components/script/dom/webidls/XRView.webidl b/components/script/dom/webidls/XRView.webidl new file mode 100644 index 00000000000..17c804009de --- /dev/null +++ b/components/script/dom/webidls/XRView.webidl @@ -0,0 +1,17 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * 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/. */ + +// https://immersive-web.github.io/webxr/#xrview-interface + +enum XREye { + "left", + "right" +}; + +[SecureContext, Exposed=Window] interface XRView { + // readonly attribute XREye eye; + // readonly attribute Float32Array projectionMatrix; + // readonly attribute Float32Array viewMatrix; + // readonly attribute XRRigidTransform transform; +}; \ No newline at end of file diff --git a/components/script/dom/xrview.rs b/components/script/dom/xrview.rs new file mode 100644 index 00000000000..c8f420b016c --- /dev/null +++ b/components/script/dom/xrview.rs @@ -0,0 +1,30 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * 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::XRViewBinding; +use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; +use crate::dom::bindings::root::DomRoot; +use crate::dom::globalscope::GlobalScope; +use dom_struct::dom_struct; + +#[dom_struct] +pub struct XRView { + reflector_: Reflector, +} + +impl XRView { + fn new_inherited() -> XRView { + XRView { + reflector_: Reflector::new(), + } + } + + pub fn new(global: &GlobalScope) -> DomRoot { + reflect_dom_object( + Box::new(XRView::new_inherited()), + global, + XRViewBinding::Wrap, + ) + } +}