| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <title>FileAPI Test: filereader_result</title> |
| <link rel="author" title="Intel" href="http://www.intel.com"> |
| <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#filedata-attr"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| </head> |
| <body> |
| <div id="log"></div> |
| |
| <script> |
| 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); |
| } |
| } |
| </script> |
| </body> |
| </html> |