| // META: title=FileAPI Test: filereader_result | |
| var blob, blob2; | |
| setup(function() { | |
| blob = new Blob(["This test the result attribute"]); | |
| blob2 = new Blob(["This is a second blob"]); | |
| }); | |
| async_test(function() { | |
| var readText = new FileReader(); | |
| assert_equals(readText.result, null); | |
| readText.onloadend = this.step_func(function(evt) { | |
| assert_equals(typeof readText.result, "string", "The result type is string"); | |
| assert_equals(readText.result, "This test the result attribute", "The result is correct"); | |
| this.done(); | |
| }); | |
| readText.readAsText(blob); | |
| }, "readAsText"); | |
| async_test(function() { | |
| var readDataURL = new FileReader(); | |
| assert_equals(readDataURL.result, null); | |
| readDataURL.onloadend = this.step_func(function(evt) { | |
| assert_equals(typeof readDataURL.result, "string", "The result type is string"); | |
| assert_true(readDataURL.result.indexOf("VGhpcyB0ZXN0IHRoZSByZXN1bHQgYXR0cmlidXRl") != -1, "return the right base64 string"); | |
| this.done(); | |
| }); | |
| readDataURL.readAsDataURL(blob); | |
| }, "readAsDataURL"); | |
| async_test(function() { | |
| var readArrayBuffer = new FileReader(); | |
| assert_equals(readArrayBuffer.result, null); | |
| readArrayBuffer.onloadend = this.step_func(function(evt) { | |
| assert_true(readArrayBuffer.result instanceof ArrayBuffer, "The result is instanceof ArrayBuffer"); | |
| this.done(); | |
| }); | |
| readArrayBuffer.readAsArrayBuffer(blob); | |
| }, "readAsArrayBuffer"); | |
| async_test(function() { | |
| var readBinaryString = new FileReader(); | |
| assert_equals(readBinaryString.result, null); | |
| readBinaryString.onloadend = this.step_func(function(evt) { | |
| assert_equals(typeof readBinaryString.result, "string", "The result type is string"); | |
| assert_equals(readBinaryString.result, "This test the result attribute", "The result is correct"); | |
| this.done(); | |
| }); | |
| readBinaryString.readAsBinaryString(blob); | |
| }, "readAsBinaryString"); | |
| for (let event of ['loadstart', 'progress']) { | |
| for (let method of ['readAsText', 'readAsDataURL', 'readAsArrayBuffer', 'readAsBinaryString']) { | |
| promise_test(async function(t) { | |
| var reader = new FileReader(); | |
| assert_equals(reader.result, null, 'result is null before read'); | |
| var eventWatcher = new EventWatcher(t, reader, | |
| [event, 'loadend']); | |
| reader[method](blob); | |
| assert_equals(reader.result, null, 'result is null after first read call'); | |
| await eventWatcher.wait_for(event); | |
| assert_equals(reader.result, null, 'result is null during event'); | |
| await eventWatcher.wait_for('loadend'); | |
| assert_not_equals(reader.result, null); | |
| reader[method](blob); | |
| assert_equals(reader.result, null, 'result is null after second read call'); | |
| await eventWatcher.wait_for(event); | |
| assert_equals(reader.result, null, 'result is null during second read event'); | |
| }, 'result is null during "' + event + '" event for ' + method); | |
| } | |
| } |