• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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