// 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); | |
} | |
} |