| // META: title=FileReader States | |
| 'use strict'; | |
| test(function () { | |
| assert_true( | |
| "FileReader" in globalThis, | |
| "globalThis 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(); | |
| }); | |
| }); |