| <head> |
| <script> |
| |
| if (window.testRunner) { |
| testRunner.dumpAsText(); |
| testRunner.waitUntilDone(); |
| } |
| |
| function log(msg) |
| { |
| document.getElementById("logger").innerHTML += msg + "<br>"; |
| } |
| |
| function finishTest() |
| { |
| if (testRunner) |
| testRunner.notifyDone(); |
| } |
| |
| var rafCount = 0; |
| var increasingTimestampsSeen = 0; |
| var timestamp = 0; |
| var gamepad2Timestamp = -1; |
| |
| function rafCallback() |
| { |
| var gamepad = navigator.getGamepads()[0]; |
| var gamepad2 = navigator.getGamepads()[1]; |
| |
| if (gamepad2Timestamp == -1) |
| gamepad2Timestamp = gamepad2.timestamp; |
| |
| if (gamepad2Timestamp != gamepad2.timestamp) { |
| log("Timestamp of gamepad 2 should never change throughout this test, but it did!"); |
| finishTest(); |
| } |
| |
| if (gamepad.timestamp < timestamp) { |
| log("Timestamp on gamepad is " + gamepad.timestamp + " which is less than " + timestamp); |
| finishTest(); |
| } |
| |
| if (gamepad.timestamp > timestamp) |
| ++increasingTimestampsSeen; |
| |
| if (increasingTimestampsSeen == 10) { |
| log("Increasing timestamp values seen for 10 RAF cycles"); |
| finishTest(); |
| } |
| |
| if (++rafCount == 120) { |
| log("Went 120 RAF cycles without seeing 10 increasing timestamp values... yikes!"); |
| log("Number of actual timestamp increases seen: " + increasingTimestampsSeen); |
| finishTest(); |
| } |
| |
| timestamp = gamepad.timestamp; |
| |
| if (gamepad.buttons[0] == 1.0) |
| testRunner.setMockGamepadButtonValue(0, 0, 0.0); |
| else |
| testRunner.setMockGamepadButtonValue(0, 0, 1.0); |
| |
| requestAnimationFrame(rafCallback); |
| } |
| |
| function handleGamepadConnect() |
| { |
| requestAnimationFrame(rafCallback); |
| } |
| |
| function runTest() { |
| addEventListener("gamepadconnected", handleGamepadConnect); |
| |
| testRunner.setMockGamepadDetails(0, "Test Joystick", 2, 2); |
| testRunner.setMockGamepadAxisValue(0, 0, 0.7); |
| testRunner.setMockGamepadAxisValue(0, 1, -1.0); |
| testRunner.setMockGamepadButtonValue(0, 0, 1.0); |
| testRunner.setMockGamepadButtonValue(0, 1, 1.0); |
| testRunner.connectMockGamepad(0); |
| testRunner.setMockGamepadDetails(1, "Test Joystick 2", 2, 2); |
| testRunner.setMockGamepadAxisValue(1, 0, 0.7); |
| testRunner.setMockGamepadAxisValue(1, 1, -1.0); |
| testRunner.setMockGamepadButtonValue(1, 0, 1.0); |
| testRunner.setMockGamepadButtonValue(1, 1, 1.0); |
| testRunner.connectMockGamepad(1); |
| } |
| |
| </script> |
| </head> |
| <body onload="runTest();"> |
| <div id="logger"></div> |
| </body> |