|  | <!doctype html> | 
|  | <html> | 
|  | <head> | 
|  | <title>FileReader States</title> | 
|  | <link rel=help href="http://dev.w3.org/2006/webapi/FileAPI/#dfn-filereader"> | 
|  | <link rel=author title="Lenient" href="mailto:lenient315@gmail.com"> | 
|  | <script src="/resources/testharness.js"></script> | 
|  | <script src="/resources/testharnessreport.js"></script> | 
|  | </head> | 
|  | <body> | 
|  | <div id="log"></div> | 
|  | <script> | 
|  | test(function() { | 
|  | assert_true("FileReader" in window, "window should have a FileReader property."); | 
|  | }, "FileReader interface object"); | 
|  |  | 
|  | test(function(){ | 
|  | var fileReader = new FileReader(); | 
|  | assert_true(fileReader instanceof FileReader); | 
|  | }, "no-argument FileReader constructor"); | 
|  |  | 
|  | var t_abort = async_test("FileReader States -- abort"); | 
|  | t_abort.step(function(){ | 
|  | var fileReader = new FileReader(); | 
|  | assert_equals(fileReader.readyState, 0); | 
|  | assert_equals(fileReader.readyState, FileReader.EMPTY); | 
|  |  | 
|  | var blob = new Blob(); | 
|  | fileReader.readAsArrayBuffer(blob); | 
|  | assert_equals(fileReader.readyState, 1); | 
|  | assert_equals(fileReader.readyState, FileReader.LOADING); | 
|  |  | 
|  | fileReader.onabort = this.step_func(function(e) { | 
|  | assert_equals(fileReader.readyState, 2); | 
|  | assert_equals(fileReader.readyState, FileReader.DONE); | 
|  | t_abort.done(); | 
|  | }); | 
|  | fileReader.abort(); | 
|  | fileReader.onabort = this.unreached_func("abort event should fire sync") | 
|  | }); | 
|  |  | 
|  | var t_event = async_test("FileReader States -- events"); | 
|  | t_event.step(function(){ | 
|  | var fileReader = new FileReader(); | 
|  |  | 
|  | var blob = new Blob(); | 
|  | fileReader.readAsArrayBuffer(blob); | 
|  |  | 
|  | fileReader.onloadstart = this.step_func(function(e) { | 
|  | assert_equals(fileReader.readyState, 1); | 
|  | assert_equals(fileReader.readyState, FileReader.LOADING); | 
|  | }); | 
|  |  | 
|  | fileReader.onprogress = this.step_func(function(e) { | 
|  | assert_equals(fileReader.readyState, 1); | 
|  | assert_equals(fileReader.readyState, FileReader.LOADING); | 
|  | }); | 
|  |  | 
|  | fileReader.onloadend = this.step_func(function(e) { | 
|  | assert_equals(fileReader.readyState, 2); | 
|  | assert_equals(fileReader.readyState, FileReader.DONE); | 
|  | t_event.done(); | 
|  | }); | 
|  | }); | 
|  | </script> | 
|  | </body> | 
|  | </html> |