webxr: Update XRInputSource Gamepad handling, FakeXRInputController (#33403)

* Disconnect XRInputSource gamepads on removal

Signed-off-by: Daniel Adams <msub2official@gmail.com>

* Update Cargo.lock

Signed-off-by: Daniel Adams <msub2official@gmail.com>

* Comments, adjustments

Signed-off-by: Daniel Adams <msub2official@gmail.com>

* Update expectations

Signed-off-by: Daniel Adams <msub2official@gmail.com>

---------

Signed-off-by: Daniel Adams <msub2official@gmail.com>
This commit is contained in:
Daniel Adams 2024-09-12 01:52:16 +00:00 committed by GitHub
parent d9be9d6bd4
commit 08a4d751d7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 84 additions and 29 deletions

View file

@ -11,8 +11,8 @@ use ipc_channel::ipc::IpcSender;
use ipc_channel::router::ROUTER;
use profile_traits::ipc;
use webxr_api::{
EntityType, Handedness, InputId, InputSource, MockDeviceMsg, MockInputInit, MockRegion,
MockViewInit, MockViewsInit, MockWorld, TargetRayMode, Triangle, Visibility,
EntityType, Handedness, InputId, InputSource, MockButton, MockDeviceMsg, MockInputInit,
MockRegion, MockViewInit, MockViewsInit, MockWorld, TargetRayMode, Triangle, Visibility,
};
use crate::dom::bindings::codegen::Bindings::DOMPointBinding::DOMPointInit;
@ -30,7 +30,7 @@ use crate::dom::bindings::error::{Error, Fallible};
use crate::dom::bindings::refcounted::TrustedPromise;
use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector};
use crate::dom::bindings::root::DomRoot;
use crate::dom::fakexrinputcontroller::FakeXRInputController;
use crate::dom::fakexrinputcontroller::{init_to_mock_buttons, FakeXRInputController};
use crate::dom::globalscope::GlobalScope;
use crate::dom::promise::Promise;
use crate::task_source::TaskSource;
@ -267,7 +267,10 @@ impl FakeXRDeviceMethods for FakeXRDevice {
let profiles = init.profiles.iter().cloned().map(String::from).collect();
// XXXManishearth deal with supportedButtons and selection*
let mut supported_buttons = vec![];
if let Some(ref buttons) = init.supportedButtons {
supported_buttons.extend(init_to_mock_buttons(buttons));
}
let source = InputSource {
handedness,
@ -282,6 +285,7 @@ impl FakeXRDeviceMethods for FakeXRDevice {
source,
pointer_origin,
grip_origin,
supported_buttons,
};
let global = self.global();