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