| <!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> |