<!doctype html>
<meta charset=utf-8>
<title>Clipboard IDL test</title>
<meta name="timeout" content="long">
<link rel='help' href='https://w3c.github.io/clipboard-apis/#async-clipboard-api'>
<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>
'use strict';

function doTest(idl, dom, html) {
  const idl_array = new IdlArray();
  idl_array.add_untested_idls('interface Navigator {};');
  idl_array.add_untested_idls('interface EventTarget {};');
  idl_array.add_untested_idls('dictionary PermissionDescriptor {};');
  idl_array.add_untested_idls(dom, { only: ['Event', 'EventInit'] });
  idl_array.add_untested_idls(html, { only: ['DataTransfer', 'DataTransferItemList'] });
  idl_array.add_idls(idl);
  idl_array.add_objects({
    Navigator: ['navigator'],
    Clipboard: ['navigator.clipboard'],
    ClipboardEvent: ['new ClipboardEvent("x")'],
  });
  idl_array.test();
};

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

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