<!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>
<script>
'use strict';

function doTest([dom, html, hr_time]) {
  var idl_array = new IdlArray();
  idl_array.add_idls(hr_time);
  idl_array.add_dependency_idls(html);
  idl_array.add_dependency_idls(dom);
  idl_array.add_objects({
    Performance: ["window.performance"],
    Window: ["window"],
  });
  idl_array.test();
}

function fetchText(url) {
  return fetch(url).then((response) => response.text());
}

promise_test(() => {
  return Promise.all(['/interfaces/dom.idl',
                      '/interfaces/html.idl',
                      '/interfaces/hr-time.idl'].map(fetchText))
                .then(doTest);
}, 'Test driver');
</script>
</body>
</html>
