<!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>
