diff options
Diffstat (limited to 'components/script/dom/gamepadlist.rs')
-rw-r--r-- | components/script/dom/gamepadlist.rs | 49 |
1 files changed, 28 insertions, 21 deletions
diff --git a/components/script/dom/gamepadlist.rs b/components/script/dom/gamepadlist.rs index dd5bdd757d9..ed551df4c35 100644 --- a/components/script/dom/gamepadlist.rs +++ b/components/script/dom/gamepadlist.rs @@ -1,41 +1,45 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -use dom::bindings::cell::DOMRefCell; -use dom::bindings::codegen::Bindings::GamepadListBinding; -use dom::bindings::codegen::Bindings::GamepadListBinding::GamepadListMethods; -use dom::bindings::js::{JS, Root}; -use dom::bindings::reflector::{Reflector, reflect_dom_object}; -use dom::gamepad::Gamepad; -use dom::globalscope::GlobalScope; + * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ + +use crate::dom::bindings::cell::DomRefCell; +use crate::dom::bindings::codegen::Bindings::GamepadListBinding::GamepadListMethods; +use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; +use crate::dom::bindings::root::{Dom, DomRoot}; +use crate::dom::gamepad::Gamepad; +use crate::dom::globalscope::GlobalScope; use dom_struct::dom_struct; // https://www.w3.org/TR/gamepad/ #[dom_struct] pub struct GamepadList { reflector_: Reflector, - list: DOMRefCell<Vec<JS<Gamepad>>> + list: DomRefCell<Vec<Dom<Gamepad>>>, } +// TODO: support gamepad discovery +#[allow(dead_code)] impl GamepadList { fn new_inherited(list: &[&Gamepad]) -> GamepadList { GamepadList { reflector_: Reflector::new(), - list: DOMRefCell::new(list.iter().map(|g| JS::from_ref(&**g)).collect()) + list: DomRefCell::new(list.iter().map(|g| Dom::from_ref(&**g)).collect()), } } - pub fn new(global: &GlobalScope, list: &[&Gamepad]) -> Root<GamepadList> { - reflect_dom_object(box GamepadList::new_inherited(list), - global, - GamepadListBinding::Wrap) + pub fn new(global: &GlobalScope, list: &[&Gamepad]) -> DomRoot<GamepadList> { + reflect_dom_object(Box::new(GamepadList::new_inherited(list)), global) } - pub fn add_if_not_exists(&self, gamepads: &[Root<Gamepad>]) { + pub fn add_if_not_exists(&self, gamepads: &[DomRoot<Gamepad>]) { for gamepad in gamepads { - if !self.list.borrow().iter().any(|g| g.gamepad_id() == gamepad.gamepad_id()) { - self.list.borrow_mut().push(JS::from_ref(&*gamepad)); + if !self + .list + .borrow() + .iter() + .any(|g| g.gamepad_id() == gamepad.gamepad_id()) + { + self.list.borrow_mut().push(Dom::from_ref(&*gamepad)); // Ensure that the gamepad has the correct index gamepad.update_index(self.list.borrow().len() as i32 - 1); } @@ -50,12 +54,15 @@ impl GamepadListMethods for GamepadList { } // https://w3c.github.io/gamepad/#dom-navigator-getgamepads - fn Item(&self, index: u32) -> Option<Root<Gamepad>> { - self.list.borrow().get(index as usize).map(|gamepad| Root::from_ref(&**gamepad)) + fn Item(&self, index: u32) -> Option<DomRoot<Gamepad>> { + self.list + .borrow() + .get(index as usize) + .map(|gamepad| DomRoot::from_ref(&**gamepad)) } // https://w3c.github.io/gamepad/#dom-navigator-getgamepads - fn IndexedGetter(&self, index: u32) -> Option<Root<Gamepad>> { + fn IndexedGetter(&self, index: u32) -> Option<DomRoot<Gamepad>> { self.Item(index) } } |