aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/xrinputsourcearray.rs
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2020-02-15 00:42:38 -0800
committerManish Goregaokar <manishsmail@gmail.com>2020-02-15 07:53:55 -0800
commit09a23b0cb1827ec4a727c668968a4cb8933280f4 (patch)
tree8abb7903985ac83a384481353dce32641c77e981 /components/script/dom/xrinputsourcearray.rs
parent5f55cd5d71df9c555fbc24777168396ddd539f28 (diff)
downloadservo-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.rs34
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,