93ce4f82c4548d409b79f8be8f00f33483ba8fb5
[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("Index: " + gp.index);
38     log("Axes: " + gp.axes);
39     
40     var buttonString = "";
41     for (button in gp.buttons) {
42         buttonString += gp.buttons[button].pressed + "-" + gp.buttons[button].value + " ";
43     }
44     
45     log("Buttons: " + buttonString);
46 }
47
48 function* testSteps() {
49     addEventListener("gamepadconnected", handleGamepadConnect);
50     addEventListener("gamepaddisconnected", handleGamepadDisconnect);
51
52     log("Initial gamepads length: " + navigator.getGamepads().length);
53     log("Connecting 20 different gamepads");
54     for (var i = 0; i < 20; ++i) {
55         testRunner.setMockGamepadDetails(i, i, i, i);
56         testRunner.connectMockGamepad(i);
57         yield;
58     }
59     
60     log("Verifying there are 20 connected gamepads in the set of all gamepads");
61     var gamepads = navigator.getGamepads();
62     log(gamepads);
63     for (i in gamepads) {
64         logGamepad(gamepads[i]);
65     }
66
67     log("Disconnecting gamepads in reverse order, making sure gamepads array remains as expected");
68     for (var i = 19; i >= 0; --i) {
69         testRunner.disconnectMockGamepad(i);
70         yield;
71     }
72
73     log("Checking non-zero'ed details for a gamepad");
74
75     testRunner.setMockGamepadDetails(10, "Awesome Joystick 5000", 4, 20);
76     testRunner.setMockGamepadAxisValue(10, 0, 0.7);
77     testRunner.setMockGamepadAxisValue(10, 1, -0.9);
78     testRunner.setMockGamepadAxisValue(10, 2, 1.0);
79     testRunner.setMockGamepadAxisValue(10, 3, -1.0);
80     for (var i = 0; i < 20; ++i)
81         testRunner.setMockGamepadButtonValue(10, i, 1.0);
82         
83     testRunner.connectMockGamepad(10);
84     yield;
85
86     finishTest();
87 }
88
89 function runTest()
90 {
91     testGenerator = testSteps();
92     testGenerator.next();
93 }
94
95 </script>
96 </head>
97 <body onload="runTest();">
98 <div id="logger"></div>
99 </body>