/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nsIDOMEventTarget.idl"

interface nsIDOMEventListener;
interface nsIDOMBlob;

[scriptable, builtinclass, uuid(39ea2c73-7711-4cea-9f73-3166c24dfa69)]
interface nsIDOMFileReader : nsIDOMEventTarget
{
  [implicit_jscontext]
  void readAsArrayBuffer(in nsIDOMBlob filedata);
  void readAsBinaryString(in nsIDOMBlob filedata);
  void readAsText(in nsIDOMBlob filedata, [optional] in DOMString encoding);
  void readAsDataURL(in nsIDOMBlob file);

  void abort();

  const unsigned short EMPTY = 0;
  const unsigned short LOADING = 1;
  const unsigned short DONE = 2;
  readonly attribute unsigned short readyState;

  [implicit_jscontext]
  readonly attribute jsval result;

  // This is a DOMError
  readonly attribute nsISupports error;

  [implicit_jscontext] attribute jsval onloadstart;
  [implicit_jscontext] attribute jsval onprogress;
  [implicit_jscontext] attribute jsval onload;
  [implicit_jscontext] attribute jsval onabort;
  [implicit_jscontext] attribute jsval onerror;
  [implicit_jscontext] attribute jsval onloadend;
};

%{ C++
#define NS_FILEREADER_CID                            \
{0x06aa7c21, 0xfe05, 0x4cf2,                         \
{0xb1, 0xc4, 0x0c, 0x71, 0x26, 0xa4, 0xf7, 0x13}}
#define NS_FILEREADER_CONTRACTID \
"@mozilla.org/files/filereader;1"
%}
