blob: c65bb51563c7422b1c7f93235cd42a74235a2184 [file] [log] [blame]
<!DOCTYPE html>
<html>
<title>Test that FileReader.result returns the same result regardless of whether it's from cache or not by getting it twice.</title>
<body>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script type="text/javascript">
function setupHandlers(test, reader, expectedResult)
{
reader.onabort = test.step_func(function() {
assert_unreached("onabort invoked on reader");
});
reader.onerror = test.step_func(function() {
assert_unreached("onerror invoked on reader");
});
reader.onloadend = test.step_func(function() {
assert_equals(reader.readyState, reader.DONE,
"reader.readyState");
assert_equals(reader.error, null, "reader.error");
// Read result attribute twice to go through Blink's code path for
// caching converted result and reading from the cache.
assert_equals(reader.result, expectedResult, "reader.result");
assert_equals(reader.result, expectedResult, "reader.result");
test.done();
});
}
var blob = new Blob(["HelloWorld"], {"type": "text/plain;charset=us-ascii"});
var testBinaryString = async_test("Read from a blob as a binary string");
testBinaryString.step(function() {
var reader = new FileReader();
reader.readAsBinaryString(blob);
setupHandlers(testBinaryString, reader, "HelloWorld");
});
var testText = async_test("Read from a blob as a text");
testText.step(function() {
var reader = new FileReader();
reader.readAsText(blob);
setupHandlers(testText, reader, "HelloWorld");
});
var testDataURL = async_test("Read from a blob as a data URL");
testDataURL.step(function() {
var reader = new FileReader();
reader.readAsDataURL(blob);
setupHandlers(testDataURL, reader, "data:text/plain;charset=us-ascii;base64,SGVsbG9Xb3JsZA==");
});
</script>
</body>
</html>