https://github.com/web-platform-tests/wpt
Raw File
Tip revision: 7ea8a74ed7ad55fd3991e599c413cfcb3edb709c authored by Luke Bjerring on 09 April 2018, 21:41:12 UTC
Improve error message for failed wptserve
Tip revision: 7ea8a74
idlharness-manual.html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>File API manual 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 manual IDL tests</h1>

    <div>
      <p>Test steps:</p>
      <ol>
        <li>Download <a href="support/upload.txt">upload.txt</a> to local.</li>
        <li>Select the local upload.txt file to run the test.</li>
      </ol>
    </div>

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

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

    <pre id="untested_idl" style="display: none">
      interface ArrayBuffer {
      };

      interface ArrayBufferView {
      };

      interface URL {
      };

      interface EventTarget {
      };

      interface Event {
      };

      [TreatNonCallableAsNull]
      callback EventHandlerNonNull = any (Event event);
      typedef EventHandlerNonNull? EventHandler;
    </pre>

    <pre id="idl" style="display: none">
[Constructor,
 Constructor(sequence<(ArrayBuffer or ArrayBufferView or Blob or DOMString)> blobParts, optional BlobPropertyBag options), Exposed=Window,Worker]
interface Blob {

  readonly attribute unsigned long long size;
  readonly attribute DOMString type;

  //slice Blob into byte-ranged chunks

  Blob slice([Clamp] optional long long start,
             [Clamp] optional long long end,
             optional DOMString contentType);
};

dictionary BlobPropertyBag {
  DOMString type = "";
};

[Constructor(sequence<(Blob or DOMString or ArrayBufferView or ArrayBuffer)> fileBits,
[EnsureUTF16] DOMString fileName, optional FilePropertyBag options), Exposed=Window,Worker]
interface File : Blob {

  readonly attribute DOMString name;
  readonly attribute long long lastModified;

};

dictionary FilePropertyBag {

  DOMString type = "";
  long long lastModified;

};

[Exposed=Window,Worker] interface FileList {
  getter File? item(unsigned long index);
  readonly attribute unsigned long length;
};

[Constructor, Exposed=Window,Worker]
interface FileReader: EventTarget {

  // async read methods
  void readAsArrayBuffer(Blob blob);
  void readAsText(Blob blob, optional DOMString label);
  void readAsDataURL(Blob blob);

  void abort();

  // states
  const unsigned short EMPTY = 0;
  const unsigned short LOADING = 1;
  const unsigned short DONE = 2;

  readonly attribute unsigned short readyState;

  // File or Blob data
  readonly attribute (DOMString or ArrayBuffer)? result;

  readonly attribute DOMException? error;

  // event handler attributes
  attribute EventHandler onloadstart;
  attribute EventHandler onprogress;
  attribute EventHandler onload;
  attribute EventHandler onabort;
  attribute EventHandler onerror;
  attribute EventHandler onloadend;

};

[Constructor, Exposed=Worker]
interface FileReaderSync {

  // Synchronously return strings

  ArrayBuffer readAsArrayBuffer(Blob blob);
  DOMString readAsText(Blob blob, optional DOMString label);
  DOMString readAsDataURL(Blob blob);
};

partial interface URL {

  static DOMString createObjectURL(Blob blob);
  static void revokeObjectURL(DOMString url);

};
    </pre>

    <script>
      var fileInput;

      setup(function() {
        fileInput = document.querySelector("#fileChooser")
      }, {explicit_done: true, explicit_timeout: true});

      on_event(fileInput, "change", function(evt) {
        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({
          FileList: [fileInput.files],
          File: [fileInput.files[0]],
        });
        idl_array.test();

        done();
      });
    </script>
  </body>
</html>
back to top