summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/gamepad
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /testing/web-platform/tests/gamepad
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip
Add m-esr52 at 52.6.0
Diffstat (limited to 'testing/web-platform/tests/gamepad')
-rw-r--r--testing/web-platform/tests/gamepad/OWNERS1
-rw-r--r--testing/web-platform/tests/gamepad/events-manual.html34
-rw-r--r--testing/web-platform/tests/gamepad/getgamepads-polling-manual.html30
-rw-r--r--testing/web-platform/tests/gamepad/idlharness-manual.html78
-rw-r--r--testing/web-platform/tests/gamepad/idlharness.html70
-rw-r--r--testing/web-platform/tests/gamepad/timestamp-manual.html58
6 files changed, 271 insertions, 0 deletions
diff --git a/testing/web-platform/tests/gamepad/OWNERS b/testing/web-platform/tests/gamepad/OWNERS
new file mode 100644
index 000000000..d7fbc2625
--- /dev/null
+++ b/testing/web-platform/tests/gamepad/OWNERS
@@ -0,0 +1 @@
+@luser
diff --git a/testing/web-platform/tests/gamepad/events-manual.html b/testing/web-platform/tests/gamepad/events-manual.html
new file mode 100644
index 000000000..321c9b2b0
--- /dev/null
+++ b/testing/web-platform/tests/gamepad/events-manual.html
@@ -0,0 +1,34 @@
+<!doctype html>
+<html>
+<head>
+<title>Manual Gamepad events tests</title>
+<link rel="help" href="https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html#the-gamepadconnected-event">
+<link rel="help" href="https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html#the-gamepaddisconnected-event">
+<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;
+addEventListener("gamepadconnected", function (e) {
+ assert_equals(index, -1, "Too many connected events?");
+ assert_class_string(e, "GamepadEvent");
+ assert_class_string(e.gamepad, "Gamepad");
+ index = e.gamepad.index;
+ set_instructions("Found a gamepad. Now disconnect the gamepad.");
+});
+addEventListener("gamepaddisconnected", function (e) {
+ assert_class_string(e, "GamepadEvent");
+ assert_equals(e.gamepad.index, index);
+ 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>
diff --git a/testing/web-platform/tests/gamepad/getgamepads-polling-manual.html b/testing/web-platform/tests/gamepad/getgamepads-polling-manual.html
new file mode 100644
index 000000000..bcbb5eb2f
--- /dev/null
+++ b/testing/web-platform/tests/gamepad/getgamepads-polling-manual.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<html>
+<head>
+<title>Manual Gamepad getGamepads polling tests</title>
+<link rel="help" href="https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html#navigator-interface-extension">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+setup({explicit_timeout: true});
+// Poll until we see a gamepad.
+var id = setInterval(function() {
+ var gamepads = navigator.getGamepads();
+ var found = null;
+ for (var i = 0; i < gamepads.length; i++) {
+ if (gamepads[i]) {
+ found = gamepads[i];
+ break;
+ }
+ }
+ if (found) {
+ clearInterval(id);
+ done();
+ }
+}, 15);
+</script>
+</head>
+<body>
+<p>This test requires a gamepad. Connect one and press any button to start the test.</p>
+</body>
+</html>
diff --git a/testing/web-platform/tests/gamepad/idlharness-manual.html b/testing/web-platform/tests/gamepad/idlharness-manual.html
new file mode 100644
index 000000000..54f25796e
--- /dev/null
+++ b/testing/web-platform/tests/gamepad/idlharness-manual.html
@@ -0,0 +1,78 @@
+<!doctype html>
+<html>
+<head>
+<title>Manual Gamepad IDL tests</title>
+<link rel="help" href="https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html#gamepad-interface">
+<link rel="help" href="https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html#gamepadbutton-interface">
+<link rel="help" href="https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html#gamepadevent-interface">
+<link rel="help" href="https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html#navigator-interface-extension">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/WebIDLParser.js"></script>
+<script src="/resources/idlharness.js"></script>
+<script>
+setup({explicit_done: true, explicit_timeout: true});
+
+addEventListener("gamepadconnected", function (e) {
+ var idl_array = new IdlArray();
+ idl_array.add_untested_idls(document.getElementById("untested_idl").textContent);
+ idl_array.add_idls(document.getElementById("idl").textContent);
+ idl_array.add_objects({
+ GamepadEvent: [e],
+ Gamepad: [e.gamepad],
+ GamepadButton: [e.gamepad.buttons[0]],
+ Navigator: ["navigator"],
+ });
+ idl_array.test();
+ done();
+});
+</script>
+</head>
+<body>
+<pre id="untested_idl" style="display: none">
+interface Navigator {
+};
+
+interface Event {
+};
+</pre>
+<pre id="idl" style="display: none">
+interface Gamepad {
+ readonly attribute DOMString id;
+ readonly attribute long index;
+ readonly attribute boolean connected;
+ readonly attribute DOMHighResTimeStamp timestamp;
+ readonly attribute GamepadMappingType mapping;
+ readonly attribute double[] axes;
+ readonly attribute GamepadButton[] buttons;
+};
+
+enum GamepadMappingType {
+ "",
+ "standard"
+};
+
+interface GamepadButton {
+ readonly attribute boolean pressed;
+ readonly attribute double value;
+};
+
+[Constructor(DOMString type, optional GamepadEventInit eventInitDict)]
+interface GamepadEvent : Event
+{
+ readonly attribute Gamepad? gamepad;
+};
+
+dictionary GamepadEventInit : EventInit
+{
+ Gamepad? gamepad = null;
+};
+
+partial interface Navigator {
+ Gamepad[] getGamepads();
+};
+</pre>
+<p id="instructions">This test requires a gamepad. Connect one and press any button to start the test.</p>
+<div id="log"></div>
+</body>
+</html>
diff --git a/testing/web-platform/tests/gamepad/idlharness.html b/testing/web-platform/tests/gamepad/idlharness.html
new file mode 100644
index 000000000..5ec141ec8
--- /dev/null
+++ b/testing/web-platform/tests/gamepad/idlharness.html
@@ -0,0 +1,70 @@
+<!doctype html>
+<html>
+<head>
+<title>Gamepad IDL tests</title>
+<link rel="help" href="https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html#gamepad-interface">
+<link rel="help" href="https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html#gamepadbutton-interface">
+<link rel="help" href="https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html#gamepadevent-interface">
+<link rel="help" href="https://dvcs.w3.org/hg/gamepad/raw-file/default/gamepad.html#navigator-interface-extension">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/WebIDLParser.js"></script>
+<script src="/resources/idlharness.js"></script>
+</head>
+<body>
+<pre id="untested_idl" style="display: none">
+interface Navigator {
+};
+
+interface Event {
+};
+</pre>
+<pre id="idl" style="display: none">
+interface Gamepad {
+ readonly attribute DOMString id;
+ readonly attribute long index;
+ readonly attribute boolean connected;
+ readonly attribute DOMHighResTimeStamp timestamp;
+ readonly attribute GamepadMappingType mapping;
+ readonly attribute double[] axes;
+ readonly attribute GamepadButton[] buttons;
+};
+
+enum GamepadMappingType {
+ "",
+ "standard"
+};
+
+interface GamepadButton {
+ readonly attribute boolean pressed;
+ readonly attribute double value;
+};
+
+[Constructor(DOMString type, optional GamepadEventInit eventInitDict)]
+interface GamepadEvent : Event
+{
+ readonly attribute Gamepad? gamepad;
+};
+
+dictionary GamepadEventInit : EventInit
+{
+ Gamepad? gamepad = null;
+};
+
+partial interface Navigator {
+ Gamepad[] getGamepads();
+};
+</pre>
+<script>
+var idl_array = new IdlArray();
+idl_array.add_untested_idls(document.getElementById("untested_idl").textContent);
+idl_array.add_idls(document.getElementById("idl").textContent);
+idl_array.add_objects({
+ GamepadEvent: [new GamepadEvent("something")],
+ Navigator: ["navigator"],
+ });
+idl_array.test();
+</script>
+<div id="log"></div>
+</body>
+</html>
diff --git a/testing/web-platform/tests/gamepad/timestamp-manual.html b/testing/web-platform/tests/gamepad/timestamp-manual.html
new file mode 100644
index 000000000..dec74a000
--- /dev/null
+++ b/testing/web-platform/tests/gamepad/timestamp-manual.html
@@ -0,0 +1,58 @@
+<!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>