<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>FileAPI Test: filereader_error</title>
    <link rel="author" title="Intel" href="http://www.intel.com">
    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#dfn-domerror">
    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#abort">
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
  </head>
  <body>
    <div id="log"></div>

    <script>
    async_test(function() {
      var blob = new Blob(["TEST THE ERROR ATTRIBUTE AND ERROR EVENT"]);
      var reader = new FileReader();
      assert_equals(reader.error, null, "The error is null when no error occurred");

      reader.onload = this.step_func(function(evt) {
        assert_unreached("Should not dispatch the load event");
      });

      reader.onloadend = this.step_func(function(evt) {
        assert_equals(reader.result, null, "The result is null");
        this.done();
      });

      reader.readAsText(blob);
      reader.abort();
    });
    </script>
  </body>
</html>
