• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!DOCTYPE html>
2<html>
3  <head>
4    <meta charset="utf-8">
5    <title>FileAPI Test: filereader_abort</title>
6    <link rel="author" title="Intel" href="http://www.intel.com">
7    <link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#abort">
8    <script src="/resources/testharness.js"></script>
9    <script src="/resources/testharnessreport.js"></script>
10  </head>
11  <body>
12    <div id="log"></div>
13
14    <script>
15    test(function() {
16      var readerNoRead = new FileReader();
17      readerNoRead.abort();
18      assert_equals(readerNoRead.readyState, readerNoRead.EMPTY);
19      assert_equals(readerNoRead.result, null);
20    }, "Aborting before read");
21
22    promise_test(t => {
23        var blob = new Blob(["TEST THE ABORT METHOD"]);
24        var readerAbort = new FileReader();
25
26        var eventWatcher = new EventWatcher(t, readerAbort,
27            ['abort', 'loadstart', 'loadend', 'error', 'load']);
28
29        // EventWatcher doesn't let us inspect the state after the abort event,
30        // so add an extra event handler for that.
31        readerAbort.addEventListener('abort', t.step_func(e => {
32              assert_equals(readerAbort.readyState, readerAbort.DONE);
33          }));
34
35        readerAbort.readAsText(blob);
36        return eventWatcher.wait_for('loadstart')
37          .then(() => {
38              assert_equals(readerAbort.readyState, readerAbort.LOADING);
39              // 'abort' and 'loadend' events are dispatched synchronously, so
40              // call wait_for before calling abort.
41              var nextEvent = eventWatcher.wait_for(['abort', 'loadend']);
42              readerAbort.abort();
43              return nextEvent;
44            })
45          .then(() => {
46              // https://www.w3.org/Bugs/Public/show_bug.cgi?id=24401
47              assert_equals(readerAbort.result, null);
48              assert_equals(readerAbort.readyState, readerAbort.DONE);
49            });
50      }, "Aborting after read");
51    </script>
52  </body>
53</html>
54