open-during-abort-event.htm (1646B)
1 <!doctype html> 2 <title>XMLHttpRequest: open() during abort event - abort() called from upload.onloadstart</title> 3 <script src="/resources/testharness.js"></script> 4 <script src="/resources/testharnessreport.js"></script> 5 <div id="log"></div> 6 <script> 7 async_test(t => { 8 let client = new XMLHttpRequest(), 9 log = [], 10 lastTest = false, 11 expected = [ 12 'readyState before abort() 1', 13 "upload.onabort - before open() 4", 14 "readyState after open() 1", 15 "client.onabort 1", 16 "client.onloadend 1", 17 "readyState after abort() 1", 18 "client.onload 4", 19 "client.onloadend 4" 20 ] 21 22 client.upload.onloadstart = t.step_func(() => { 23 log.push('readyState before abort() '+client.readyState) 24 client.abort() 25 log.push('readyState after abort() '+client.readyState) 26 }) 27 28 client.upload.onabort = t.step_func(() => { 29 log.push('upload.onabort - before open() ' + client.readyState) 30 client.open("GET", "resources/content.py") 31 log.push('readyState after open() ' + client.readyState) 32 client.send(null) 33 }) 34 35 client.onabort = t.step_func(() => { 36 // happens immediately after all of upload.onabort, so readyState is 1 37 log.push('client.onabort ' + client.readyState) 38 }) 39 40 client.onloadend = t.step_func(() => { 41 log.push('client.onloadend ' + client.readyState) 42 if(lastTest) { 43 assert_array_equals(log, expected) 44 t.done() 45 } 46 lastTest = true 47 }) 48 49 client.onload = t.step_func(() => { 50 log.push('client.onload ' + client.readyState) 51 }) 52 53 client.open("POST", "resources/content.py") 54 client.send("non-empty") 55 }) 56 </script>