| <!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> |