<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>File API automated IDL tests</title>
    <link rel="author" title="Intel" href="http://www.intel.com">
    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#conformance">
    <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>File API automated IDL tests</h1>

    <div id="log"></div>

    <form name="uploadData">
      <input type="file" id="fileChooser">
    </form>

    <script>
      'use strict';

      promise_test(async () => {
        const idl = await fetch('/interfaces/FileAPI.idl').then(r => r.text());
        const dom = await fetch('/interfaces/dom.idl').then(r => r.text());
        const html = await fetch('/interfaces/html.idl').then(r => r.text());
        const url = await fetch('/interfaces/url.idl').then(r => r.text());

        const idl_array = new IdlArray();
        idl_array.add_idls(idl);
        idl_array.add_dependency_idls(url);
        idl_array.add_dependency_idls(html);
        idl_array.add_dependency_idls(dom);
        idl_array.add_untested_idls("[Exposed=(Window,Worker)] interface ArrayBuffer {};");

        idl_array.add_objects({
          Blob: ['new Blob(["TEST"])'],
          File: ['new File(["myFileBits"], "myFileName")'],
          FileList: ['document.querySelector("#fileChooser").files'],
          FileReader: ['new FileReader()']
        });

        idl_array.test();
      }, 'Test FileAPI IDL implementation');
    </script>

  </body>
</html>
