progress-manual.html (1594B)
1 <!DOCTYPE html> 2 <meta charset=utf-8> 3 <title>Process Events for FileReader</title> 4 <link rel=help href="http://dev.w3.org/2006/webapi/FileAPI/#event-handler-attributes-section"> 5 <link rel=author title="Jinks Zhao" href="mailto:jinks@maxthon.com"> 6 <script src="/resources/testharness.js"></script> 7 <script src="/resources/testharnessreport.js"></script> 8 Please choose one file through this input below.<br> 9 <input type="file" id="filer"> 10 <div id="log"></div> 11 <script> 12 var input, reader, progressEventCounter, progressEventTimeList, 13 lastProgressEventTime; 14 setup(function() { 15 input = document.getElementById('filer'); 16 reader = new FileReader(); 17 progressEventCounter = 0; 18 progressEventTimeList = []; 19 lastProgressEventTime; 20 }, { explicit_timeout: true }); 21 22 var t = async_test("FileReader progress events.") 23 24 reader.onprogress = t.step_func(function () { 25 var newTime = new Date; 26 var timeout = newTime - lastProgressEventTime; 27 28 progressEventTimeList.push(timeout); 29 lastProgressEventTime = newTime; 30 progressEventCounter++; 31 32 assert_less_than_equal(timeout, 50, "The progress event should be fired every 50ms."); 33 }); 34 35 reader.onload = t.step_func_done(function () { 36 assert_greater_than_equal(progressEventCounter, 1, 37 "When read completely, the progress event must be fired at least once.") 38 }); 39 40 input.onchange = t.step_func(function () { 41 var files = input.files; 42 43 assert_greater_than(files.length, 0); 44 var file = files[0]; 45 46 lastProgressEventTime = new Date; 47 reader.readAsArrayBuffer(file); 48 }); 49 </script>