diff options
author | Manish Goregaokar <manishsmail@gmail.com> | 2020-02-15 00:42:38 -0800 |
---|---|---|
committer | Manish Goregaokar <manishsmail@gmail.com> | 2020-02-15 07:53:55 -0800 |
commit | 09a23b0cb1827ec4a727c668968a4cb8933280f4 (patch) | |
tree | 8abb7903985ac83a384481353dce32641c77e981 /components/script/dom/xrinputsourcearray.rs | |
parent | 5f55cd5d71df9c555fbc24777168396ddd539f28 (diff) | |
download | servo-09a23b0cb1827ec4a727c668968a4cb8933280f4.tar.gz servo-09a23b0cb1827ec4a727c668968a4cb8933280f4.zip |
Always trigger an input sources change event on session creation
Diffstat (limited to 'components/script/dom/xrinputsourcearray.rs')
-rw-r--r-- | components/script/dom/xrinputsourcearray.rs | 34 |
1 files changed, 13 insertions, 21 deletions
diff --git a/components/script/dom/xrinputsourcearray.rs b/components/script/dom/xrinputsourcearray.rs index 86a107bcd27..99db386050b 100644 --- a/components/script/dom/xrinputsourcearray.rs +++ b/components/script/dom/xrinputsourcearray.rs @@ -38,30 +38,22 @@ impl XRInputSourceArray { ) } - pub fn set_initial_inputs(&self, session: &XRSession) { + pub fn add_input_sources(&self, session: &XRSession, inputs: &[InputSource]) { 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.clone()); - input_sources.push(Dom::from_ref(&input)); - } - }); - } - pub fn add_input_source(&self, session: &XRSession, info: InputSource) { - let mut input_sources = self.input_sources.borrow_mut(); - let global = self.global(); - debug_assert!( - input_sources.iter().find(|i| i.id() == info.id).is_none(), - "Should never add a duplicate input id!" - ); - let input = XRInputSource::new(&global, &session, info); - input_sources.push(Dom::from_ref(&input)); - - let added = [input]; + let mut added = vec![]; + for info in inputs { + // This is quadratic, but won't be a problem for the only case + // where we add multiple input sources (the initial input sources case) + debug_assert!( + input_sources.iter().find(|i| i.id() == info.id).is_none(), + "Should never add a duplicate input id!" + ); + let input = XRInputSource::new(&global, &session, info.clone()); + input_sources.push(Dom::from_ref(&input)); + added.push(input); + } let event = XRInputSourcesChangeEvent::new( &global, |