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> 8Please choose one file through this input below.<br> 9<input type="file" id="filer"> 10<div id="log"></div> 11<script> 12var input, reader, progressEventCounter, progressEventTimeList, 13 lastProgressEventTime; 14setup(function() { 15 input = document.getElementById('filer'); 16 reader = new FileReader(); 17 progressEventCounter = 0; 18 progressEventTimeList = []; 19 lastProgressEventTime; 20}, { explicit_timeout: true }); 21 22var t = async_test("FileReader progress events.") 23 24reader.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 35reader.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 40input.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> 50