<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>High Resolution Time IDL tests</title>
<link rel="author" title="W3C" href="http://www.w3.org/" />
<link rel="help" href="http://www.w3.org/TR/hr-time/#sec-extenstions-performance-interface"/>
<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>
<h1>High Resolution Time IDL tests</h1>
<div id="log"></div>

<pre id='untested_idl' style='display:none'>
[Exposed=Windows,Worker]
interface WindowOrWorkerGlobalScope {
};

[Exposed=(Window,Worker)]
interface EventTarget {
};

[Exposed=Window]
interface PerformanceTiming {
};

[Exposed=Window]
interface PerformanceNavigation {
};

// from nav-timing
partial interface Performance {
    [SameObject]
    readonly attribute PerformanceTiming timing;
    [SameObject]
    readonly attribute PerformanceNavigation navigation;
    [Default] object              toJSON();
};
</pre>

<pre id='idl'>
typedef double DOMHighResTimeStamp;

[Exposed=(Window,Worker)]
interface Performance : EventTarget {
    DOMHighResTimeStamp now();
    readonly attribute DOMHighResTimeStamp timeOrigin;
    [Default] object              toJSON();
};

partial interface WindowOrWorkerGlobalScope {
    [Replaceable]
    readonly attribute Performance performance;
};
</pre>

<script>

(function() {
  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({Performance: [window.performance]});

  idl_array.test();
})();

</script>
</body>
</html>
