diff options
author | Manish Goregaokar <manishsmail@gmail.com> | 2019-10-08 15:04:43 -0700 |
---|---|---|
committer | Manish Goregaokar <manishsmail@gmail.com> | 2019-10-08 15:34:20 -0700 |
commit | 0777233412359f49acd542916910e7ec6ed4dac2 (patch) | |
tree | 00b3a433289462ac6d15ea18f41dccd610ea8894 /components/script/dom/xrinputsourcearray.rs | |
parent | b5b852be757b65bc72efb73bf8f10d698f5e009f (diff) | |
download | servo-0777233412359f49acd542916910e7ec6ed4dac2.tar.gz servo-0777233412359f49acd542916910e7ec6ed4dac2.zip |
Store inputs array in XRInputSourceArray
Diffstat (limited to 'components/script/dom/xrinputsourcearray.rs')
-rw-r--r-- | components/script/dom/xrinputsourcearray.rs | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/components/script/dom/xrinputsourcearray.rs b/components/script/dom/xrinputsourcearray.rs index d0d4a747052..bf63e38e073 100644 --- a/components/script/dom/xrinputsourcearray.rs +++ b/components/script/dom/xrinputsourcearray.rs @@ -2,21 +2,26 @@ * 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::cell::DomRefCell; use crate::dom::bindings::codegen::Bindings::XRInputSourceArrayBinding; -use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; -use crate::dom::bindings::root::DomRoot; +use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; +use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::globalscope::GlobalScope; +use crate::dom::xrinputsource::XRInputSource; +use crate::dom::xrsession::XRSession; use dom_struct::dom_struct; #[dom_struct] pub struct XRInputSourceArray { reflector_: Reflector, + input_sources: DomRefCell<Vec<Dom<XRInputSource>>>, } impl XRInputSourceArray { fn new_inherited() -> XRInputSourceArray { XRInputSourceArray { reflector_: Reflector::new(), + input_sources: DomRefCell::new(vec![]), } } @@ -27,4 +32,17 @@ impl XRInputSourceArray { XRInputSourceArrayBinding::Wrap, ) } + + pub fn set_initial_inputs(&self, session: &XRSession) { + let mut input_sources = self.input_sources.borrow_mut(); + let global = self.global(); + session.with_session(|sess| { + for info in sess.initial_inputs() { + // XXXManishearth we should be able to listen for updates + // to the input sources + let input = XRInputSource::new(&global, &session, *info); + input_sources.push(Dom::from_ref(&input)); + } + }); + } } |