|  | <!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; | 
|  | readonly attribute boolean isClosed; | 
|  |  | 
|  | //slice Blob into byte-ranged chunks | 
|  |  | 
|  | Blob slice([Clamp] optional long long start, | 
|  | [Clamp] optional long long end, | 
|  | optional DOMString contentType); | 
|  | void close(); | 
|  |  | 
|  | }; | 
|  |  | 
|  | 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 DOMError? 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 DOMString createFor(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> |