summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/xhr/open-after-abort.htm
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/xhr/open-after-abort.htm')
-rw-r--r--testing/web-platform/tests/xhr/open-after-abort.htm77
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>