diff options
author | yvt <i@yvt.jp> | 2021-07-10 17:24:27 +0900 |
---|---|---|
committer | yvt <i@yvt.jp> | 2021-07-10 17:55:42 +0900 |
commit | 01a7de50ab1843d85295f9dccad7f4c099e7208c (patch) | |
tree | ee53fb6e8889deb7b880ee969e6c662e6128d210 /components/script/dom/gamepadbuttonlist.rs | |
parent | ff8d2cdbbfc7a9dc7f38b7dd47cb350fde39388f (diff) | |
parent | 94b613fbdaa2b98f2179fc0bbda13c64e6fa0d38 (diff) | |
download | servo-01a7de50ab1843d85295f9dccad7f4c099e7208c.tar.gz servo-01a7de50ab1843d85295f9dccad7f4c099e7208c.zip |
Merge remote-tracking branch 'upstream/master' into feat-cow-infra
`tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html`
was reverted to the upstream version.
Diffstat (limited to 'components/script/dom/gamepadbuttonlist.rs')
-rw-r--r-- | components/script/dom/gamepadbuttonlist.rs | 44 |
1 files changed, 14 insertions, 30 deletions
diff --git a/components/script/dom/gamepadbuttonlist.rs b/components/script/dom/gamepadbuttonlist.rs index 5ac25504009..4d9e86c45ef 100644 --- a/components/script/dom/gamepadbuttonlist.rs +++ b/components/script/dom/gamepadbuttonlist.rs @@ -1,46 +1,28 @@ /* 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/. */ + * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -use dom::bindings::codegen::Bindings::GamepadButtonListBinding; -use dom::bindings::codegen::Bindings::GamepadButtonListBinding::GamepadButtonListMethods; -use dom::bindings::js::{JS, Root, RootedReference}; -use dom::bindings::reflector::{Reflector, reflect_dom_object}; -use dom::gamepadbutton::GamepadButton; -use dom::globalscope::GlobalScope; +use crate::dom::bindings::codegen::Bindings::GamepadButtonListBinding::GamepadButtonListMethods; +use crate::dom::bindings::reflector::Reflector; +use crate::dom::bindings::root::{Dom, DomRoot}; +use crate::dom::gamepadbutton::GamepadButton; use dom_struct::dom_struct; -use webvr_traits::WebVRGamepadButton; // https://w3c.github.io/gamepad/#gamepadbutton-interface #[dom_struct] pub struct GamepadButtonList { reflector_: Reflector, - list: Vec<JS<GamepadButton>> + list: Vec<Dom<GamepadButton>>, } +// TODO: support gamepad discovery +#[allow(dead_code)] impl GamepadButtonList { #[allow(unrooted_must_root)] fn new_inherited(list: &[&GamepadButton]) -> GamepadButtonList { GamepadButtonList { reflector_: Reflector::new(), - list: list.iter().map(|button| JS::from_ref(*button)).collect(), - } - } - - pub fn new_from_vr(global: &GlobalScope, buttons: &[WebVRGamepadButton]) -> Root<GamepadButtonList> { - rooted_vec!(let list <- buttons.iter() - .map(|btn| GamepadButton::new(&global, btn.pressed, btn.touched))); - - reflect_dom_object(box GamepadButtonList::new_inherited(list.r()), - global, - GamepadButtonListBinding::Wrap) - } - - pub fn sync_from_vr(&self, vr_buttons: &[WebVRGamepadButton]) { - let mut index = 0; - for btn in vr_buttons { - self.list.get(index).as_ref().unwrap().update(btn.pressed, btn.touched); - index += 1; + list: list.iter().map(|button| Dom::from_ref(*button)).collect(), } } } @@ -52,12 +34,14 @@ impl GamepadButtonListMethods for GamepadButtonList { } // https://w3c.github.io/gamepad/#dom-gamepad-buttons - fn Item(&self, index: u32) -> Option<Root<GamepadButton>> { - self.list.get(index as usize).map(|button| Root::from_ref(&**button)) + fn Item(&self, index: u32) -> Option<DomRoot<GamepadButton>> { + self.list + .get(index as usize) + .map(|button| DomRoot::from_ref(&**button)) } // https://w3c.github.io/gamepad/#dom-gamepad-buttons - fn IndexedGetter(&self, index: u32) -> Option<Root<GamepadButton>> { + fn IndexedGetter(&self, index: u32) -> Option<DomRoot<GamepadButton>> { self.Item(index) } } |