Get timestamps and ids working in WK2 gamepads (and test them!)
[WebKit-https.git] / LayoutTests / gamepad / gamepad-polling-access.html
1 <head>
2 <script>
3
4 if (window.testRunner) {
5     testRunner.dumpAsText();
6     testRunner.waitUntilDone();
7 }
8
9 function log(msg)
10 {
11     document.getElementById("logger").innerHTML += msg + "<br>";
12 }
13
14 function finishTest()
15 {
16     if (testRunner)
17         testRunner.notifyDone();
18 }
19
20 function handleGamepadConnect(evt)
21 {
22     log("Connecting gamepad:");
23     log(navigator.getGamepads());
24     logGamepad(evt.gamepad);
25     testGenerator.next();
26 }
27
28 function handleGamepadDisconnect(evt)
29 {
30     log("Disconnecting gamepad:");
31     log(navigator.getGamepads());
32     testGenerator.next();
33 }
34
35 function logGamepad(gp)
36 {
37     log("Name: " + gp.id);
38     log("Index: " + gp.index);
39     log("Axes: " + gp.axes);
40     
41     var buttonString = "";
42     for (button in gp.buttons) {
43         buttonString += gp.buttons[button].pressed + "-" + gp.buttons[button].value + " ";
44     }
45     
46     log("Buttons: " + buttonString);
47 }
48
49 function* testSteps() {
50     addEventListener("gamepadconnected", handleGamepadConnect);
51     addEventListener("gamepaddisconnected", handleGamepadDisconnect);
52
53     log("Initial gamepads length: " + navigator.getGamepads().length);
54     log("Connecting 20 different gamepads");
55     for (var i = 0; i < 20; ++i) {
56         testRunner.setMockGamepadDetails(i, i, i, i);
57         testRunner.connectMockGamepad(i);
58         yield;
59     }
60     
61     log("Verifying there are 20 connected gamepads in the set of all gamepads");
62     var gamepads = navigator.getGamepads();
63     log(gamepads);
64     for (i in gamepads) {
65         logGamepad(gamepads[i]);
66     }
67
68     log("Disconnecting gamepads in reverse order, making sure gamepads array remains as expected");
69     for (var i = 19; i >= 0; --i) {
70         testRunner.disconnectMockGamepad(i);
71         yield;
72     }
73
74     log("Checking non-zero'ed details for a gamepad");
75
76     testRunner.setMockGamepadDetails(10, "Awesome Joystick 5000", 4, 20);
77     testRunner.setMockGamepadAxisValue(10, 0, 0.7);
78     testRunner.setMockGamepadAxisValue(10, 1, -0.9);
79     testRunner.setMockGamepadAxisValue(10, 2, 1.0);
80     testRunner.setMockGamepadAxisValue(10, 3, -1.0);
81     for (var i = 0; i < 20; ++i)
82         testRunner.setMockGamepadButtonValue(10, i, 1.0);
83         
84     testRunner.connectMockGamepad(10);
85     yield;
86
87     finishTest();
88 }
89
90 function runTest()
91 {
92     testGenerator = testSteps();
93     testGenerator.next();
94 }
95
96 </script>
97 </head>
98 <body onload="runTest();">
99 <div id="logger"></div>
100 </body>