diff options
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/dom/webidls/XRInputSourceArray.webidl | 6 | ||||
-rw-r--r-- | components/script/dom/xrinputsourcearray.rs | 16 |
2 files changed, 19 insertions, 3 deletions
diff --git a/components/script/dom/webidls/XRInputSourceArray.webidl b/components/script/dom/webidls/XRInputSourceArray.webidl index 939371bf417..f8a0eb4308d 100644 --- a/components/script/dom/webidls/XRInputSourceArray.webidl +++ b/components/script/dom/webidls/XRInputSourceArray.webidl @@ -6,7 +6,7 @@ [SecureContext, Exposed=Window, Pref="dom.webxr.enabled"] interface XRInputSourceArray { - // iterable<XRInputSource>; - // readonly attribute unsigned long length; - // getter XRInputSource(unsigned long index); + iterable<XRInputSource>; + readonly attribute unsigned long length; + getter XRInputSource(unsigned long index); }; diff --git a/components/script/dom/xrinputsourcearray.rs b/components/script/dom/xrinputsourcearray.rs index bf63e38e073..b0565940373 100644 --- a/components/script/dom/xrinputsourcearray.rs +++ b/components/script/dom/xrinputsourcearray.rs @@ -4,6 +4,7 @@ use crate::dom::bindings::cell::DomRefCell; use crate::dom::bindings::codegen::Bindings::XRInputSourceArrayBinding; +use crate::dom::bindings::codegen::Bindings::XRInputSourceArrayBinding::XRInputSourceArrayMethods; use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::globalscope::GlobalScope; @@ -46,3 +47,18 @@ impl XRInputSourceArray { }); } } + +impl XRInputSourceArrayMethods for XRInputSourceArray { + /// https://immersive-web.github.io/webxr/#dom-xrinputsourcearray-length + fn Length(&self) -> u32 { + self.input_sources.borrow().len() as u32 + } + + /// https://immersive-web.github.io/webxr/#xrinputsourcearray + fn IndexedGetter(&self, n: u32) -> Option<DomRoot<XRInputSource>> { + self.input_sources + .borrow() + .get(n as usize) + .map(|x| DomRoot::from_ref(&**x)) + } +} |