aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/xrinputsourcearray.rs
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2020-01-13 15:13:08 +0530
committerManish Goregaokar <manishsmail@gmail.com>2020-01-21 15:47:30 -0800
commit9c34a6585b50b7c20468060dafca717d1d363e6c (patch)
tree8161e4603b6e7f2f737bdc8296f4e6879f6d86c1 /components/script/dom/xrinputsourcearray.rs
parente9221e6ce02b4fc16676bda2895105bea8e95e7f (diff)
downloadservo-9c34a6585b50b7c20468060dafca717d1d363e6c.tar.gz
servo-9c34a6585b50b7c20468060dafca717d1d363e6c.zip
Handle SetTargetRayMode and SetHandedness
Diffstat (limited to 'components/script/dom/xrinputsourcearray.rs')
-rw-r--r--components/script/dom/xrinputsourcearray.rs31
1 files changed, 31 insertions, 0 deletions
diff --git a/components/script/dom/xrinputsourcearray.rs b/components/script/dom/xrinputsourcearray.rs
index 45e0f2851e4..66e4045e44a 100644
--- a/components/script/dom/xrinputsourcearray.rs
+++ b/components/script/dom/xrinputsourcearray.rs
@@ -101,6 +101,37 @@ impl XRInputSourceArray {
event.upcast::<Event>().fire(session.upcast());
}
+ pub fn add_remove_input_source(&self, session: &XRSession, id: InputId, info: InputSource) {
+ let mut input_sources = self.input_sources.borrow_mut();
+ let global = self.global();
+ let root;
+ let removed = if let Some(i) = input_sources.iter().find(|i| i.id() == id) {
+ root = [DomRoot::from_ref(&**i)];
+ &root as &[_]
+ } else {
+ warn!("Could not find removed input source with id {:?}", id);
+ &[]
+ };
+ input_sources.retain(|i| i.id() != id);
+ let input = XRInputSource::new(&global, &session, info);
+ input_sources.push(Dom::from_ref(&input));
+
+ let added = [input];
+
+ let event = XRInputSourcesChangeEvent::new(
+ &global,
+ atom!("inputsourceschange"),
+ false,
+ true,
+ session,
+ &added,
+ removed,
+ );
+ // release the refcell guard
+ drop(input_sources);
+ event.upcast::<Event>().fire(session.upcast());
+ }
+
pub fn find(&self, id: InputId) -> Option<DomRoot<XRInputSource>> {
self.input_sources
.borrow()