blob: 353e0dd2b065c46ecc40d52518cf8b3fe0c953da [file] [log] [blame]
<!DOCTYPE html>
<body>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="resources/gamepad-helpers.js"></script>
<script>
promise_test(async () => {
assert_inherits(navigator, 'getGamepads');
assert_own_property(window, 'GamepadEvent');
let gamepads = navigator.getGamepads();
assert_equals(gamepads.length, 4, 'gamepads.length');
assert_equals(gamepads[0], null, 'gamepads[0]');
assert_class_string(gamepads.item, 'Function', 'gamepads.item');
assert_equals(gamepads.item(0), null, 'gamepads.item(0)');
gamepadController.connect(0);
gamepadController.setId(0, "MockStick 3000");
gamepadController.setButtonCount(0, 1);
gamepadController.setAxisCount(0, 1);
gamepadController.dispatchConnected(0);
await ongamepadconnected();
let gamepad = navigator.getGamepads()[0];
assert_not_equals(gamepad, null, 'gamepad');
assert_true(gamepad.connected, 'gamepad.connected');
assert_class_string(gamepad, 'Gamepad', 'gamepad');
assert_class_string(gamepad.id, 'String', 'gamepad.id');
assert_class_string(gamepad.connected, 'Boolean', 'gamepad.connected');
assert_class_string(gamepad.index, 'Number', 'gamepad.index');
assert_class_string(gamepad.timestamp, 'Number', 'gamepad.timestamp');
assert_class_string(gamepad.axes, 'Array', 'gamepad.axes');
assert_class_string(gamepad.axes[0], 'Number', 'gamepad.axes[0]');
assert_class_string(gamepad.buttons, 'Array', 'gamepad.buttons');
assert_class_string(gamepad.buttons[0].pressed, 'Boolean', 'gamepad.buttons[0].pressed');
assert_class_string(gamepad.buttons[0].value, 'Number', 'gamepad.buttons[0].value');
assert_class_string(gamepad.mapping, 'String', 'gamepad.mapping');
assert_true(Object.isFrozen(gamepad.axes), 'gamepad.axes frozen');
assert_true(Object.isFrozen(gamepad.buttons), 'gamepad.buttons frozen');
}, "Validates the exposed Gamepad API.");
</script>
</body>