mirror of
https://github.com/servo/servo
synced 2026-04-26 01:25:32 +02:00
Put the Gamepad API and its supporting infrastructure behind a `gamepad` feature flag. This allows embedders to opt-out of gamepad support at compile time to save on binary size and reduce dependencies. Testing: 1. `./mach build -d` (Gamepad enabled by default) 2. `cargo build -p servoshell --no-default-features --features "libservo/clipboard,js_jit,max_log_level,webgpu"` (Gamepad Disabled) 3. `cargo build -p servoshell --features "gamepad,webxr,..."` (Gamepad & WebXR Enabled) Fixes: #40897 Signed-off-by: WaterWhisperer <waterwhisperer24@qq.com>
39 lines
1.4 KiB
Plaintext
39 lines
1.4 KiB
Plaintext
/* 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/. */
|
|
|
|
// skip-unless CARGO_FEATURE_GAMEPAD
|
|
|
|
// https://w3c.github.io/gamepad/#gamepad-interface
|
|
[Exposed=Window, Pref="dom_gamepad_enabled"]
|
|
interface Gamepad {
|
|
readonly attribute DOMString id;
|
|
readonly attribute long index;
|
|
readonly attribute boolean connected;
|
|
readonly attribute DOMHighResTimeStamp timestamp;
|
|
readonly attribute DOMString mapping;
|
|
readonly attribute Float64Array axes;
|
|
[SameObject] readonly attribute GamepadButtonList buttons;
|
|
[SameObject] readonly attribute GamepadHapticActuator vibrationActuator;
|
|
};
|
|
|
|
// https://w3c.github.io/gamepad/extensions.html#partial-gamepad-interface
|
|
partial interface Gamepad {
|
|
readonly attribute GamepadHand hand;
|
|
// readonly attribute FrozenArray<GamepadHapticActuator> hapticActuators;
|
|
readonly attribute GamepadPose? pose;
|
|
};
|
|
|
|
// https://w3c.github.io/gamepad/extensions.html#gamepadhand-enum
|
|
enum GamepadHand {
|
|
"", /* unknown, both hands, or not applicable */
|
|
"left",
|
|
"right"
|
|
};
|
|
|
|
// https://www.w3.org/TR/gamepad/#extensions-to-the-windoweventhandlers-interface-mixin
|
|
partial interface mixin WindowEventHandlers {
|
|
attribute EventHandler ongamepadconnected;
|
|
attribute EventHandler ongamepaddisconnected;
|
|
};
|