#import <DOM/EventTarget.idl>
#import <FileAPI/Blob.idl>
#import <WebIDL/DOMException.idl>

// https://w3c.github.io/FileAPI/#dfn-filereader
[Exposed=(Window,Worker)]
interface FileReader : EventTarget {
    constructor();
    // async read methods
    undefined readAsArrayBuffer(Blob blob);
    undefined readAsBinaryString(Blob blob);
    undefined readAsText(Blob blob, optional DOMString encoding);
    undefined readAsDataURL(Blob blob);

    undefined 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 content attributes
    attribute EventHandler onloadstart;
    attribute EventHandler onprogress;
    attribute EventHandler onload;
    attribute EventHandler onabort;
    attribute EventHandler onerror;
    attribute EventHandler onloadend;
};
