<!DOCTYPE html>
<meta charset="utf-8">
<title>Gyroscope Sensor IDL tests</title>
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="help" href="https://w3c.github.io/gyroscope/">
<link rel="help" href="https://w3c.github.io/sensors/">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/WebIDLParser.js"></script>
<script src="/resources/idlharness.js"></script>
<style>
  pre {
    display: none;
  }
</style>
<div id="log"></div>

<pre id="idl">
interface Event {
};

interface Error {
};

dictionary EventInit {
};

interface EventTarget {
};

interface EventHandler {
};
</pre>

<pre id="generic-idl">
[SecureContext]
interface Sensor : EventTarget {
  readonly attribute boolean activated;
  readonly attribute DOMHighResTimeStamp? timestamp;
  void start();
  void stop();
  attribute EventHandler onchange;
  attribute EventHandler onactivate;
  attribute EventHandler onerror;
};

dictionary SensorOptions {
  double? frequency;
};

[SecureContext, Constructor(DOMString type, SensorErrorEventInit errorEventInitDict)]
interface SensorErrorEvent : Event {
  readonly attribute Error error;
};

dictionary SensorErrorEventInit : EventInit {
  required Error error;
};
</pre>

<pre id="gyroscope-idl">
[Constructor(optional SensorOptions sensorOptions)]
interface Gyroscope : Sensor {
  readonly attribute unrestricted double? x;
  readonly attribute unrestricted double? y;
  readonly attribute unrestricted double? z;
};
</pre>

<script>

(() => {
  "use strict";
  let idl_array = new IdlArray();
  idl_array.add_untested_idls(document.getElementById('idl').textContent);
  idl_array.add_untested_idls(document.getElementById('generic-idl').textContent);
  idl_array.add_idls(document.getElementById('gyroscope-idl').textContent);

  idl_array.add_objects({
    Gyroscope: ['new Gyroscope();']
  });

  idl_array.test();
})();

</script>
