| <!doctype html> |
| <html> |
| <head> |
| <title>XMLHttpRequest: open() after abort()</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <link rel="help" href="https://xhr.spec.whatwg.org/#the-open()-method" data-tested-assertations="following::ol/li[15] following::ol/li[15]/ol/li[1] following::ol/li[15]/ol/li[2]" /> |
| </head> |
| <body> |
| <div id="log"></div> |
| <script> |
| test(function(t) { |
| var client = new XMLHttpRequest(), |
| result = [], |
| expected = [ |
| 'readystatechange', 0, 1, // open() |
| 'readystatechange', 2, 4, // abort() |
| 'abort', 2, 4, // abort() |
| 'loadend', 2, 4, // abort() |
| 'readystatechange', 3, 1, // open() |
| ] |
| |
| var state = 0 |
| |
| client.onreadystatechange = t.step_func(function() { |
| result.push('readystatechange', state, client.readyState) |
| }) |
| client.onabort = t.step_func(function() { |
| // abort event must be fired synchronously from abort(). |
| assert_equals(state, 2) |
| |
| // readystatechange should be fired before abort. |
| assert_array_equals(result, [ |
| 'readystatechange', 0, 1, // open() |
| 'readystatechange', 2, 4, // abort() |
| ]) |
| |
| // readyState should be set to unsent (0) at the very end of abort(), |
| // after this (and onloadend) is called. |
| assert_equals(client.readyState, 4) |
| |
| result.push('abort', state, client.readyState) |
| }) |
| client.onloadend = t.step_func(function() { |
| // abort event must be fired synchronously from abort(). |
| assert_equals(state, 2) |
| |
| // readystatechange should be fired before abort. |
| assert_array_equals(result, [ |
| 'readystatechange', 0, 1, // open() |
| 'readystatechange', 2, 4, // abort() |
| 'abort', 2, 4, // abort() |
| ]) |
| |
| // readyState should be set to unsent (0) at the very end of abort(), |
| // after this is called. |
| assert_equals(client.readyState, 4) |
| |
| result.push('loadend', state, client.readyState) |
| }) |
| |
| client.open("GET", "resources/well-formed.xml") |
| assert_equals(client.readyState, 1) |
| |
| state = 1 |
| client.send(null) |
| state = 2 |
| client.abort() |
| assert_equals(client.readyState, 0) |
| state = 3 |
| client.open("GET", "resources/well-formed.xml") |
| assert_equals(client.readyState, 1) |
| assert_array_equals(result, expected) |
| }) |
| </script> |
| </body> |
| </html> |