| <!DOCTYPE html> | |
| <meta charset=utf-8> | |
| <title>Process Events for FileReader</title> | |
| <link rel=help href="http://dev.w3.org/2006/webapi/FileAPI/#event-handler-attributes-section"> | |
| <link rel=author title="Jinks Zhao" href="mailto:jinks@maxthon.com"> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| Please choose one file through this input below.<br> | |
| <input type="file" id="filer"> | |
| <div id="log"></div> | |
| <script> | |
| var input, reader, progressEventCounter, progressEventTimeList, | |
| lastProgressEventTime; | |
| setup(function() { | |
| input = document.getElementById('filer'); | |
| reader = new FileReader(); | |
| progressEventCounter = 0; | |
| progressEventTimeList = []; | |
| lastProgressEventTime; | |
| }, { explicit_timeout: true }); | |
| var t = async_test("FileReader progress events.") | |
| reader.onprogress = t.step_func(function () { | |
| var newTime = new Date; | |
| var timeout = newTime - lastProgressEventTime; | |
| progressEventTimeList.push(timeout); | |
| lastProgressEventTime = newTime; | |
| progressEventCounter++; | |
| assert_less_than_equal(timeout, 50, "The progress event should be fired every 50ms."); | |
| }); | |
| reader.onload = t.step_func_done(function () { | |
| assert_greater_than_equal(progressEventCounter, 1, | |
| "When read completely, the progress event must be fired at least once.") | |
| }); | |
| input.onchange = t.step_func(function () { | |
| var files = input.files; | |
| assert_greater_than(files.length, 0); | |
| var file = files[0]; | |
| lastProgressEventTime = new Date; | |
| reader.readAsArrayBuffer(file); | |
| }); | |
| </script> |