| <!doctype html> |
| <title>XMLHttpRequest: open() during abort processing - abort() called from onloadstart</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <div id="log"></div> |
| <script> |
| async_test(t => { |
| let client = new XMLHttpRequest(), |
| test_state = 1, |
| log = [], |
| expected = [ |
| "onloadstart readyState before abort() 1", |
| "onreadystatechange readyState before open() 4", |
| "onreadystatechange readyState after open() 1", |
| "onloadstart readyState 1", |
| "upload.onabort 1", |
| "upload.onloadend 1", |
| "client.onabort 1", |
| "readyState after abort() 1", |
| "client.onload 4" |
| ] |
| |
| client.onreadystatechange = t.step_func(() => { |
| if(test_state === 2){ |
| test_state = 3 |
| log.push('onreadystatechange readyState before open() ' + client.readyState) |
| client.open("GET", "resources/content.py") |
| log.push('onreadystatechange readyState after open() ' + client.readyState) |
| client.send(null) |
| } |
| }) |
| |
| client.onloadstart = t.step_func(() => { |
| if(test_state === 1){ |
| test_state = 2 |
| log.push('onloadstart readyState before abort() ' + client.readyState) |
| client.abort() |
| log.push('readyState after abort() ' + client.readyState) |
| }else{ |
| log.push('onloadstart readyState ' + client.readyState) |
| } |
| }) |
| |
| client.upload.onabort = t.step_func(() => { |
| log.push('upload.onabort ' + client.readyState) |
| }) |
| |
| client.onabort = t.step_func(() => { |
| log.push('client.onabort ' + client.readyState) |
| }) |
| |
| client.upload.onloadend = t.step_func(() => { |
| log.push('upload.onloadend ' + client.readyState) |
| }) |
| |
| client.onload = t.step_func_done(() => { |
| log.push('client.onload ' + client.readyState) |
| assert_array_equals(log, expected) |
| }) |
| |
| client.open("POST", "resources/content.py") |
| client.send('abcd') |
| }) |
| </script> |