8000 Gamepad.vibrationActuator should be nullable · WebKit/WebKit@3d4e479 · GitHub
[go: up one dir, main page]

Skip to content

Commit 3d4e479

Browse files
committed
Gamepad.vibrationActuator should be nullable
https://bugs.webkit.org/show_bug.cgi?id=250411 Reviewed by Brent Fulgham. Gamepad.vibrationActuator should be nullable: - w3c/gamepad#178 Gamepad.vibrationActuator is supposed to return null if the gamepad doesn't support dual-rumble: - https://w3c.github.io/gamepad/extensions.html#gamepadhapticactuator-interface (Construction section) * LayoutTests/gamepad/gamepad-event-handlers.html: * LayoutTests/gamepad/gamepad-polling-access.html: * LayoutTests/gamepad/gamepad-timestamp.html: * LayoutTests/gamepad/gamepad-vibrationActuator-SameObject.html: * LayoutTests/gamepad/gamepad-vibrationActuator-nullable-expected.txt: Added. * LayoutTests/gamepad/gamepad-vibrationActuator-nullable.html: Added. * LayoutTests/gamepad/gamepad-vibrationActuator-playEffect-validation.html: * LayoutTests/gamepad/gamepad-vibrationActuator-type.html: * LayoutTests/gamepad/gamepad-visibility-1.html: * Source/WebCore/Modules/gamepad/Gamepad.cpp: (WebCore::Gamepad::Gamepad): (WebCore::Gamepad::vibrationActuator): Deleted. * Source/WebCore/Modules/gamepad/Gamepad.h: * Source/WebCore/Modules/gamepad/Gamepad.idl: * Source/WebCore/testing/MockGamepad.cpp: (WebCore::MockGamepad::MockGamepad): (WebCore::MockGamepad::updateDetails): * Source/WebCore/testing/MockGamepad.h: * Source/WebCore/testing/MockGamepadProvider.cpp: (WebCore::MockGamepadProvider::setMockGamepadDetails): * Source/WebCore/testing/MockGamepadProvider.h: * Source/WebCore/testing/js/WebCoreTestSupport.cpp: (WebCoreTestSupport::setMockGamepadDetails): * Source/WebCore/testing/js/WebCoreTestSupport.h: * Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl: * Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp: (WTR::TestRunner::setMockGamepadDetails): * Tools/WebKitTestRunner/InjectedBundle/TestRunner.h: * Tools/WebKitTestRunner/TestInvocation.cpp: (WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle): Canonical link: https://commits.webkit.org/258812@main
1 parent 2fa94f7 commit 3d4e479

24 files changed

+97
-38
lines changed

LayoutTests/gamepad/gamepad-event-handlers.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<script>
33
testRunner?.dumpAsText();
44
testRunner?.waitUntilDone();
5-
testRunner?.setMockGamepadDetails(0, "Test Joystick", "", 2, 2);
5+
testRunner?.setMockGamepadDetails(0, "Test Joystick", "", 2, 2, false);
66

77
function log(msg) {
88
document.getElementById("logger").innerHTML += msg + "<br>";

LayoutTests/gamepad/gamepad-polling-access.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
// do one at a time...
6666
for (var i = 0; i < 20; ++i) {
6767
const p = makeHandlerListenerPair("connected");
68-
testRunner.setMockGamepadDetails(i, i, "", i, i);
68+
testRunner.setMockGamepadDetails(i, i, "", i, i, false);
6969
log("Connecting gamepad:");
7070
testRunner.connectMockGamepad(i);
7171
await p;
@@ -99,7 +99,8 @@
9999
"Awesome Joystick 5000",
100100
"standard",
101101
4,
102-
16
102+
16,
103+
false
103104
);
104105
testRunner.setMockGamepadAxisValue(10, 0, 0.7);
105106
testRunner.setMockGamepadAxisValue(10, 1, -0.9);

LayoutTests/gamepad/gamepad-timestamp.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,13 @@
7272
function runTest() {
7373
addEventListener("gamepadconnected", handleGamepadConnect);
7474

75-
testRunner.setMockGamepadDetails(0, "Test Joystick", "", 2, 2);
75+
testRunner.setMockGamepadDetails(0, "Test Joystick", "", 2, 2, false);
7676
testRunner.setMockGamepadAxisValue(0, 0, 0.7);
7777
testRunner.setMockGamepadAxisValue(0, 1, -1.0);
7878
testRunner.setMockGamepadButtonValue(0, 0, 1.0);
7979
testRunner.setMockGamepadButtonValue(0, 1, 1.0);
8080
testRunner.connectMockGamepad(0);
81-
testRunner.setMockGamepadDetails(1, "Test Joystick 2", "", 2, 2);
81+
testRunner.setMockGamepadDetails(1, "Test Joystick 2", "", 2, 2, false);
8282
testRunner.setMockGamepadAxisValue(1, 0, 0.7);
8383
testRunner.setMockGamepadAxisValue(1, 1, -1.0);
8484
testRunner.setMockGamepadButtonValue(1, 0, 1.0);

LayoutTests/gamepad/gamepad-vibration-document-no-longer-fully-active.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@
2121
}
2222
finishJSTest();
2323
});
24-
testRunner.setMockGamepadDetails(0, "Test Gamepad", "", 2, 2);
24+
const supportsDualRumble = true;
25+
testRunner.setMockGamepadDetails(0, "Test Gamepad", "", 2, 2, supportsDualRumble);
2526
testRunner.setMockGamepadAxisValue(0, 0, 0.7);
2627
testRunner.setMockGamepadAxisValue(0, 1, -1.0);
2728
testRunner.setMockGamepadButtonValue(0, 0, 1.0);

LayoutTests/gamepad/gamepad-vibration-visibility-change.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@
2121
}
2222
finishJSTest();
2323
});
24-
testRunner.setMockGamepadDetails(0, "Test Gamepad", "", 2, 2);
24+
const supportsDualRumble = true;
25+
testRunner.setMockGamepadDetails(0, "Test Gamepad", "", 2, 2, supportsDualRumble);
2526
testRunner.setMockGamepadAxisValue(0, 0, 0.7);
2627
testRunner.setMockGamepadAxisValue(0, 1, -1.0);
2728
testRunner.setMockGamepadButtonValue(0, 0, 1.0);

LayoutTests/gamepad/gamepad-vibrationActuator-SameObject.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@
2121
}, 0);
2222
});
2323

24-
testRunner.setMockGamepadDetails(0, "Test Gamepad", "", 2, 2);
24+
const supportsDualRumble = true;
25+
testRunner.setMockGamepadDetails(0, "Test Gamepad", "", 2, 2, supportsDualRumble);
2526
testRunner.setMockGamepadAxisValue(0, 0, 0.7);
2627
testRunner.setMockGamepadAxisValue(0, 1, -1.0);
2728
testRunner.setMockGamepadButtonValue(0, 0, 1.0);
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
Tests that Gamepad.vibrationActuator is null when the gamepad doesn't support dual-rumble
2+
3+
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
4+
5+
6+
PASS navigator.getGamepads()[0].vibrationActuator is not null
7+
PASS navigator.getGamepads()[1].vibrationActuator is null
8+
PASS successfullyParsed is true
9+
10+
TEST COMPLETE
11+
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<head>
2+
<script src="../resources/js-test.js"></script>
3+
<body>
4+
<script>
5+
description("Tests that Gamepad.vibrationActuator is null when the gamepad doesn't support dual-rumble");
6+
jsTestIsAsync = true;
7+
8+
let gamepadCount = 0;
9+
10+
function runTest() {
11+
addEventListener("gamepadconnected", e => {
12+
gamepadCount++;
13+
if (gamepadCount < 2)
14+
return;
15+
16+
shouldNotBe("navigator.getGamepads()[0].vibrationActuator", "null");
17+
shouldBe("navigator.getGamepads()[1].vibrationActuator", "null");
18+
19+
finishJSTest();
20+
});
21+
22+
let supportsDualRumble = true;
23+
testRunner.setMockGamepadDetails(0, "Test Gamepad", "", 2, 2, supportsDualRumble);
24+
testRunner.setMockGamepadAxisValue(0, 0, 0.7);
25+
testRunner.setMockGamepadAxisValue(0, 1, -1.0);
26+
testRunner.setMockGamepadButtonValue(0, 0, 1.0);
27+
testRunner.setMockGamepadButtonValue(0, 1, 1.0);
28+
testRunner.connectMockGamepad(0);
29+
30+
supportsDualRumble = false;
31+
testRunner.setMockGamepadDetails(1, "Test Gamepad Without Vibration", "", 2, 2, supportsDualRumble);
32+
testRunner.setMockGamepadAxisValue(1, 0, 0.7);
33+
testRunner.setMockGamepadAxisValue(1, 1, -1.0);
34+
testRunner.setMockGamepadButtonValue(1, 0, 1.0);
35+
testRunner.setMockGamepadButtonValue(1, 1, 1.0);
36+
testRunner.connectMockGamepad(1);
37+
}
38+
39+
onload = runTest;
40+
</script>
41+
</body>

LayoutTests/gamepad/gamepad-vibrationActuator-playEffect-validation.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@
3939
finishJSTest();
4040
});
4141

42-
testRunner.setMockGamepadDetails(0, "Test Gamepad", "", 2, 2);
42+
const supportsDualRumble = true;
43+
testRunner.setMockGamepadDetails(0, "Test Gamepad", "", 2, 2, supportsDualRumble);
4344
testRunner.setMockGamepadAxisValue(0, 0, 0.7);
4445
testRunner.setMockGamepadAxisValue(0, 1, -1.0);
4546
testRunner.setMockGamepadButtonValue(0, 0, 1.0);

LayoutTests/gamepad/gamepad-vibrationActuator-type.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
finishJSTest();
1515
});
1616

17-
testRunner.setMockGamepadDetails(0, "Test Gamepad", "", 2, 2);
17+
const supportsDualRumble = true;
18+
testRunner.setMockGamepadDetails(0, "Test Gamepad", "", 2, 2, supportsDualRumble);
1819
testRunner.setMockGamepadAxisValue(0, 0, 0.7);
1920
testRunner.setMockGamepadAxisValue(0, 1, -1.0);
2021
testRunner.setMockGamepadButtonValue(0, 0, 1.0);

0 commit comments

Comments
 (0)
0