/* -*- 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;
interface nsIDOMDOMError;

[scriptable, builtinclass, uuid(faed1779-b523-4060-8c3b-7199f347b273)]
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;
  readonly attribute nsIDOMDOMError error;

  attribute nsIDOMEventListener onloadstart;
  attribute nsIDOMEventListener onprogress;
  attribute nsIDOMEventListener onload;
  attribute nsIDOMEventListener onabort;
  attribute nsIDOMEventListener onerror;
  attribute nsIDOMEventListener 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"
%}
