aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/gamepadlist.rs
diff options
context:
space:
mode:
authorDaniel Adams <70986246+msub2@users.noreply.github.com>2024-04-07 23:43:48 -1000
committerGitHub <noreply@github.com>2024-04-08 09:43:48 +0000
commite38b34a6298f3144e13ff41a5ab2021a35010923 (patch)
treea764e042a568eb8c56b4b8e3749c9ed10fc7429b /components/script/dom/gamepadlist.rs
parentddbec46e1fe6716e2cba5e073f62014c22539589 (diff)
downloadservo-e38b34a6298f3144e13ff41a5ab2021a35010923.tar.gz
servo-e38b34a6298f3144e13ff41a5ab2021a35010923.zip
Gamepad: Remove GamepadList and fix dropped connection event on startup (#31684)
* Replace GamepadList * Fix initial gamepad connection event from gilrs getting dropped * Fix gamepad reconnection issues, use MutNullableDom * Reduce some repetition in handle_gamepad_events * Address feedback, move some steps to navigator methods * Refactor internal navigator gamepad methods * Add note re: unused gilrs index, adjust navigator gamepad methods
Diffstat (limited to 'components/script/dom/gamepadlist.rs')
-rw-r--r--components/script/dom/gamepadlist.rs79
1 files changed, 0 insertions, 79 deletions
diff --git a/components/script/dom/gamepadlist.rs b/components/script/dom/gamepadlist.rs
deleted file mode 100644
index 847f8632ab7..00000000000
--- a/components/script/dom/gamepadlist.rs
+++ /dev/null
@@ -1,79 +0,0 @@
-/* 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 https://mozilla.org/MPL/2.0/. */
-
-use dom_struct::dom_struct;
-
-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;
-
-// https://www.w3.org/TR/gamepad/
-#[dom_struct]
-pub struct GamepadList {
- reflector_: Reflector,
- list: DomRefCell<Vec<Dom<Gamepad>>>,
-}
-
-impl GamepadList {
- fn new_inherited(list: &[&Gamepad]) -> GamepadList {
- GamepadList {
- reflector_: Reflector::new(),
- list: DomRefCell::new(list.iter().map(|g| Dom::from_ref(&**g)).collect()),
- }
- }
-
- 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: &[DomRoot<Gamepad>]) {
- for gamepad in gamepads {
- 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);
- }
- }
- }
-
- pub fn remove_gamepad(&self, index: usize) {
- self.list.borrow_mut().remove(index);
- }
-
- pub fn list(&self) -> Vec<Option<DomRoot<Gamepad>>> {
- self.list
- .borrow()
- .iter()
- .map(|gamepad| Some(DomRoot::from_ref(&**gamepad)))
- .collect()
- }
-}
-
-impl GamepadListMethods for GamepadList {
- // https://w3c.github.io/gamepad/#dom-navigator-getgamepads
- fn Length(&self) -> u32 {
- self.list.borrow().len() as u32
- }
-
- // https://w3c.github.io/gamepad/#dom-navigator-getgamepads
- 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<DomRoot<Gamepad>> {
- self.Item(index)
- }
-}