<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>FileAPI Test: filereader_readAsArrayBuffer</title>
    <link rel="author" title="Intel" href="http://www.intel.com">
    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#readAsArrayBuffer">
    <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"]);
      var reader = new FileReader();

      reader.onload = this.step_func(function(evt) {
        assert_equals(reader.result.byteLength, 4, "The byteLength is 4");
        assert_true(reader.result instanceof ArrayBuffer, "The result is instanceof ArrayBuffer");
        assert_equals(reader.readyState, reader.DONE);
        this.done();
      });

      reader.onloadstart = this.step_func(function(evt) {
        assert_equals(reader.readyState, reader.LOADING);
      });

      reader.onprogress = this.step_func(function(evt) {
        assert_equals(reader.readyState, reader.LOADING);
      });

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