mirror of
https://github.com/servo/servo.git
synced 2025-08-08 06:55:31 +01:00
Gamepad: Implement GamepadHapticActuator (#32046)
* Implement Servo side of GamepadHapticActuator Signed-off-by: Daniel Adams <msub2official@gmail.com> * Get build working Signed-off-by: Daniel Adams <msub2official@gmail.com> * Create effect handling on embedder side Signed-off-by: Daniel Adams <msub2official@gmail.com> * Update tracing for GamepadHapticEffect Signed-off-by: Daniel Adams <msub2official@gmail.com> * Update gilrs to point to commit with effect complete event Signed-off-by: Daniel Adams <msub2official@gmail.com> * Implement playing and preempting haptic effects Signed-off-by: Daniel Adams <msub2official@gmail.com> * Update IDL to add trigger rumble Signed-off-by: Daniel Adams <msub2official@gmail.com> * Update WPT expectations Signed-off-by: Daniel Adams <msub2official@gmail.com> * Handle stopping haptic effects from reset() Signed-off-by: Daniel Adams <msub2official@gmail.com> * ./mach fmt, fix test-tidy issues Signed-off-by: Daniel Adams <msub2official@gmail.com> * Add extra validity checks for trigger rumble Signed-off-by: Daniel Adams <msub2official@gmail.com> * Retrieve supported haptic effects from embedder Signed-off-by: Daniel Adams <msub2official@gmail.com> * Fix test expectations Signed-off-by: Daniel Adams <msub2official@gmail.com> * Add missing spec link, pin gilrs commit Signed-off-by: Daniel Adams <msub2official@gmail.com> * servoshell cargo formatting Signed-off-by: Daniel Adams <msub2official@gmail.com> * Fix Cargo.toml Signed-off-by: Daniel Adams <msub2official@gmail.com> * Additional comments, realm proof, naming Signed-off-by: Daniel Adams <msub2official@gmail.com> * ./mach fmt Signed-off-by: Daniel Adams <msub2official@gmail.com> * Update gilrs rev to gilrs-core 0.5.12 release Signed-off-by: Daniel Adams <msub2official@gmail.com> * Implement sequence ids for gamepad haptic promises Signed-off-by: Daniel Adams <msub2official@gmail.com> * Take playing effect promise instead of cloning Signed-off-by: Daniel Adams <msub2official@gmail.com> * Implement listener for reset function Signed-off-by: Daniel Adams <msub2official@gmail.com> * Fix Cargo.lock Signed-off-by: Daniel Adams <msub2official@gmail.com> * Restructure IPC listeners, add comments, handle visibility change Signed-off-by: Daniel Adams <msub2official@gmail.com> * Check that haptic effect still exists before handling ff completion event Signed-off-by: Daniel Adams <msub2official@gmail.com> * Visibility steps, add InRealm bindings for promises Signed-off-by: Daniel Adams <msub2official@gmail.com> * Add Gamepad EmbedderMsg arms to egl servo_glue Signed-off-by: Daniel Adams <msub2official@gmail.com> --------- Signed-off-by: Daniel Adams <msub2official@gmail.com>
This commit is contained in:
parent
9212ed203a
commit
2c17de7fa7
18 changed files with 652 additions and 68 deletions
|
@ -12,6 +12,7 @@ interface Gamepad {
|
|||
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
|
||||
|
|
38
components/script/dom/webidls/GamepadHapticActuator.webidl
Normal file
38
components/script/dom/webidls/GamepadHapticActuator.webidl
Normal file
|
@ -0,0 +1,38 @@
|
|||
/* 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/. */
|
||||
|
||||
// https://w3c.github.io/gamepad/#gamepadhapticactuator-interface
|
||||
[Exposed=Window, Pref="dom.gamepad.enabled"]
|
||||
interface GamepadHapticActuator {
|
||||
/* [SameObject] */ readonly attribute /* FrozenArray<GamepadHapticEffectType> */ any effects;
|
||||
[NewObject]
|
||||
Promise<GamepadHapticsResult> playEffect(
|
||||
GamepadHapticEffectType type,
|
||||
optional GamepadEffectParameters params = {}
|
||||
);
|
||||
[NewObject]
|
||||
Promise<GamepadHapticsResult> reset();
|
||||
};
|
||||
|
||||
// https://w3c.github.io/gamepad/#gamepadhapticsresult-enum
|
||||
enum GamepadHapticsResult {
|
||||
"complete",
|
||||
"preempted"
|
||||
};
|
||||
|
||||
// https://w3c.github.io/gamepad/#dom-gamepadhapticeffecttype
|
||||
enum GamepadHapticEffectType {
|
||||
"dual-rumble",
|
||||
"trigger-rumble"
|
||||
};
|
||||
|
||||
// https://w3c.github.io/gamepad/#dom-gamepadeffectparameters
|
||||
dictionary GamepadEffectParameters {
|
||||
unsigned long long duration = 0;
|
||||
unsigned long long startDelay = 0;
|
||||
double strongMagnitude = 0.0;
|
||||
double weakMagnitude = 0.0;
|
||||
double leftTrigger = 0.0;
|
||||
double rightTrigger = 0.0;
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue