<!doctype html> <html> <head> <title>Manual Gamepad timestamp tests</title> <link rel="help" href="https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html#widl-Gamepad-timestamp"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script> setup({explicit_timeout: true}); function set_instructions(text) { document.getElementById("instructions").textContent = text; } var index = -1; var lastTimestamp = performance.now(); var id = -1; addEventListener("gamepadconnected", function (e) { assert_equals(index, -1, "Too many connected events?"); index = e.gamepad.index; assert_greater_than(e.gamepad.timestamp, lastTimestamp, "timestamp should be increasing"); lastTimestamp = e.gamepad.timestamp; set_instructions("Found a gamepad. Now release the button you pressed and press it again."); // There may not be a button pressed here, so handle it cleanly either way. if (e.gamepad.buttons.some(function (b) { return b.pressed; })) { id = setInterval(waitForButtonRelease, 15); } else { id = setInterval(waitForButtonPress, 15); } }); function waitForButtonRelease() { var gamepad = navigator.getGamepads()[index]; assert_true(!!gamepad); if (gamepad.buttons.every(function (b) { return !b.pressed; })) { assert_greater_than(gamepad.timestamp, lastTimestamp, "timestamp should be increasing"); lastTimestamp = gamepad.timestamp; clearInterval(id); id = setInterval(waitForButtonPress, 15); } } function waitForButtonPress() { var gamepad = navigator.getGamepads()[index]; assert_true(!!gamepad); if (gamepad.buttons.some(function (b) { return b.pressed; })) { assert_greater_than(gamepad.timestamp, lastTimestamp, "timestamp should be increasing"); clearInterval(id); done(); } } </script> </head> <body> <p id="instructions">This test requires a gamepad. Connect one and press any button to start the test.</p> </body> </html>