| Ted Mielczarek | 634cdba | 2014-12-11 14:23:30 | [diff] [blame] | 1 | <!doctype html> |
| Ted Mielczarek | 634cdba | 2014-12-11 14:23:30 | [diff] [blame] | 2 | <title>Manual Gamepad IDL tests</title> |
| Wanming Lin | ddb1258 | 2017-12-13 02:23:19 | [diff] [blame] | 3 | <link rel="help" href="https://w3c.github.io/gamepad/"> |
| Ted Mielczarek | 634cdba | 2014-12-11 14:23:30 | [diff] [blame] | 4 | <script src="/resources/testharness.js"></script> |
| 5 | <script src="/resources/testharnessreport.js"></script> |
| 6 | <script src="/resources/WebIDLParser.js"></script> |
| 7 | <script src="/resources/idlharness.js"></script> |
| Wanming Lin | ddb1258 | 2017-12-13 02:23:19 | [diff] [blame] | 8 | <p id="instructions">This test requires a gamepad. Connect one and press any button to start the test.</p> |
| Ted Mielczarek | 634cdba | 2014-12-11 14:23:30 | [diff] [blame] | 9 | <script> |
| Luke Bjerring | d6ffdd3 | 2018-07-20 14:56:59 | [diff] [blame] | 10 | 'use strict'; |
| Ted Mielczarek | 634cdba | 2014-12-11 14:23:30 | [diff] [blame] | 11 | |
| Luke Bjerring | d6ffdd3 | 2018-07-20 14:56:59 | [diff] [blame] | 12 | idl_test( |
| 13 | ['gamepad'], |
| 14 | ['dom', 'html'], |
| 15 | (idl_array, t) => { |
| 16 | idl_array.add_objects({ |
| 17 | Gamepad: ['gamepad'], |
| 18 | GamepadButton: ['gamepadButton'], |
| 19 | GamepadEvent: ['event'], |
| 20 | Navigator: ['navigator'] |
| 21 | }); |
| Wanming Lin | ddb1258 | 2017-12-13 02:23:19 | [diff] [blame] | 22 | |
| Luke Bjerring | d6ffdd3 | 2018-07-20 14:56:59 | [diff] [blame] | 23 | const eventWatcher = new EventWatcher(t, window, "gamepadconnected"); |
| 24 | const gamepadConnected = eventWatcher.wait_for("gamepadconnected") |
| 25 | .then(e => { |
| 26 | self.event = e; |
| 27 | self.gamepad = e.gamepad; |
| 28 | self.gamepadButton = e.gamepad.buttons[0]; |
| 29 | }); |
| Wanming Lin | ddb1258 | 2017-12-13 02:23:19 | [diff] [blame] | 30 | |
| Luke Bjerring | d6ffdd3 | 2018-07-20 14:56:59 | [diff] [blame] | 31 | const timeout = new Promise((_, reject) => { |
| 32 | t.step_timeout(() => { reject('Timed out waiting for gamepad'); }, 5000); |
| 33 | }); |
| 34 | return Promise.race([gamepadConnected, timeout]); |
| Philip Jägenstedt | a570eb1 | 2018-08-13 11:37:43 | [diff] [blame] | 35 | } |
| Luke Bjerring | d6ffdd3 | 2018-07-20 14:56:59 | [diff] [blame] | 36 | ); |
| Ted Mielczarek | 634cdba | 2014-12-11 14:23:30 | [diff] [blame] | 37 | </script> |