diff options
Diffstat (limited to 'testing/web-platform/tests/xhr/open-after-abort.htm')
-rw-r--r-- | testing/web-platform/tests/xhr/open-after-abort.htm | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/testing/web-platform/tests/xhr/open-after-abort.htm b/testing/web-platform/tests/xhr/open-after-abort.htm new file mode 100644 index 0000000000..c9ef6e7ac9 --- /dev/null +++ b/testing/web-platform/tests/xhr/open-after-abort.htm @@ -0,0 +1,77 @@ +<!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> |