OLD | NEW |
---|---|
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <html> | 2 <html> |
3 <body> | 3 <body> |
4 <script src="../resources/testharness.js"></script> | 4 <script src="../resources/testharness.js"></script> |
5 <script src="../resources/testharnessreport.js"></script> | 5 <script src="../resources/testharnessreport.js"></script> |
6 <script type="text/javascript"> | 6 <script type="text/javascript"> |
7 | |
8 // Interval prepared to wait until deciding if 'abort' has been delivered (or no t.) | |
9 var TIME_DELAY_ABORT_DELIVERY = 200; | |
10 | |
7 test(function() | 11 test(function() |
8 { | 12 { |
9 var xhr = new XMLHttpRequest; | 13 var xhr = new XMLHttpRequest; |
10 xhr.onreadystatechange = this.step_func(function() { | 14 xhr.onreadystatechange = this.step_func(function() { |
11 assert_unreached("Received readystatechange event unexpectedly: readySta te=" + xhr.readyState) | 15 assert_unreached("Received readystatechange event unexpectedly: readySta te=" + xhr.readyState) |
12 }); | 16 }); |
17 xhr.onabort = this.step_func(function () { | |
18 assert_unreached("Unexpected 'abort' event in state UNSENT."); | |
19 }); | |
13 xhr.abort(); | 20 xhr.abort(); |
14 assert_equals(xhr.readyState, xhr.UNSENT, "xhr.readyState after abort() call "); | 21 assert_equals(xhr.readyState, xhr.UNSENT, "xhr.readyState after abort() call "); |
15 }, "Test onreadystatechange invocation when abort()-ed in UNSENT state."); | 22 }, "Test onreadystatechange + onabort invocation when abort()-ed in UNSENT state ."); |
16 | 23 |
17 test(function() | 24 test(function() |
18 { | 25 { |
19 var xhr = new XMLHttpRequest; | 26 var xhr = new XMLHttpRequest; |
20 var seenStates = []; | 27 var seenStates = []; |
21 xhr.onreadystatechange = this.step_func(function() { | 28 xhr.onreadystatechange = this.step_func(function() { |
22 seenStates.push(xhr.readyState); | 29 seenStates.push(xhr.readyState); |
23 | 30 |
24 switch (xhr.readyState) { | 31 switch (xhr.readyState) { |
25 case xhr.OPENED: | 32 case xhr.OPENED: |
26 return; | 33 return; |
27 | 34 |
28 case xhr.UNSENT: | 35 case xhr.UNSENT: |
29 case xhr.HEADERS_RECEIVED: | 36 case xhr.HEADERS_RECEIVED: |
30 case xhr.LOADING: | 37 case xhr.LOADING: |
31 case xhr.DONE: | 38 case xhr.DONE: |
32 default: | 39 default: |
33 assert_unreached("Unexpected readyState: " + xhr.readyState); | 40 assert_unreached("Unexpected readyState: " + xhr.readyState); |
34 return; | 41 return; |
35 } | 42 } |
36 }); | 43 }); |
44 xhr.onabort = this.step_func(function () { | |
45 assert_unreached("Unexpected 'abort' event in state OPENED."); | |
46 }); | |
37 xhr.open("GET", "resources/test.ogv", true); | 47 xhr.open("GET", "resources/test.ogv", true); |
38 xhr.abort(); | 48 xhr.abort(); |
39 assert_equals(xhr.readyState, xhr.UNSENT, "xhr.readyState after abort() call "); | 49 assert_equals(xhr.readyState, xhr.UNSENT, "xhr.readyState after abort() call "); |
40 assert_array_equals(seenStates, [xhr.OPENED]); | 50 assert_array_equals(seenStates, [xhr.OPENED]); |
41 }, "Test onreadystatechange invocation when abort()-ed in OPENED state."); | 51 }, "Test onreadystatechange + onabort invocation when abort()-ed in OPENED state ."); |
42 | 52 |
43 test(function() | 53 var abortAfterSendTest = async_test("Test onreadystatechange + onabort invocatio n when abort()-ed right after calling send()."); |
54 abortAfterSendTest.step(function() | |
44 { | 55 { |
45 var xhr = new XMLHttpRequest; | 56 var xhr = new XMLHttpRequest; |
46 var seenStates = []; | 57 var seenStates = []; |
47 xhr.onreadystatechange = this.step_func(function() { | 58 xhr.onreadystatechange = this.step_func(function() { |
48 seenStates.push(xhr.readyState); | 59 seenStates.push(xhr.readyState); |
49 | 60 |
50 switch (xhr.readyState) { | 61 switch (xhr.readyState) { |
51 case xhr.OPENED: | 62 case xhr.OPENED: |
52 case xhr.DONE: | 63 case xhr.DONE: |
53 return; | 64 return; |
54 | 65 |
55 case xhr.UNSENT: | 66 case xhr.UNSENT: |
56 case xhr.HEADERS_RECEIVED: | 67 case xhr.HEADERS_RECEIVED: |
57 case xhr.LOADING: | 68 case xhr.LOADING: |
58 default: | 69 default: |
59 assert_unreached("Unexpected readyState: " + xhr.readyState); | 70 assert_unreached("Unexpected readyState: " + xhr.readyState); |
60 return; | 71 return; |
61 } | 72 } |
62 }); | 73 }); |
74 var abortFired = false; | |
75 xhr.onabort = function () { | |
76 abortFired = true; | |
77 }; | |
63 xhr.open("GET", "resources/test.ogv", true); | 78 xhr.open("GET", "resources/test.ogv", true); |
64 xhr.send(); | 79 xhr.send(); |
65 xhr.abort(); | 80 xhr.abort(); |
66 assert_equals(xhr.readyState, xhr.UNSENT, "xhr.readyState after abort() call "); | 81 assert_equals(xhr.readyState, xhr.UNSENT, "xhr.readyState after abort() call "); |
67 assert_array_equals(seenStates, [xhr.OPENED, xhr.DONE]); | 82 assert_array_equals(seenStates, [xhr.OPENED, xhr.DONE]); |
68 }, "Test onreadystatechange invocation when abort()-ed right after calling send( )."); | 83 setTimeout(abortAfterSendTest.step_func(function () { |
84 assert_true(abortFired, "Expected 'abort' event to have fired in sent re quest."); | |
85 abortAfterSendTest.done(); | |
86 }), TIME_DELAY_ABORT_DELIVERY); | |
87 }); | |
69 | 88 |
70 var abortInHeadersReceivedTest = async_test("Test onreadystatechange invocation when abort()-ed in HEADERS_RECEIVED state."); | 89 var abortInHeadersReceivedTest = async_test("Test onreadystatechange + onabort i nvocation when abort()-ed in HEADERS_RECEIVED state."); |
71 abortInHeadersReceivedTest.step(function() | 90 abortInHeadersReceivedTest.step(function() |
72 { | 91 { |
73 var xhr = new XMLHttpRequest; | 92 var xhr = new XMLHttpRequest; |
74 var seenStates = []; | 93 var seenStates = []; |
75 xhr.onreadystatechange = abortInHeadersReceivedTest.step_func(function() { | 94 xhr.onreadystatechange = abortInHeadersReceivedTest.step_func(function() { |
76 seenStates.push(xhr.readyState); | 95 seenStates.push(xhr.readyState); |
77 | 96 |
78 switch (xhr.readyState) { | 97 switch (xhr.readyState) { |
79 case xhr.OPENED: | 98 case xhr.OPENED: |
80 case xhr.DONE: | 99 case xhr.DONE: |
81 return; | 100 return; |
82 | 101 |
83 case xhr.HEADERS_RECEIVED: | 102 case xhr.HEADERS_RECEIVED: |
84 xhr.abort(); | 103 xhr.abort(); |
85 assert_equals(xhr.readyState, xhr.UNSENT, "xhr.readyState after abor t() call"); | 104 abortInHeadersReceivedTest.step(function () { |
tyoshino (SeeGerritForStatus)
2013/11/07 13:38:05
step() is unnecessary. we're in step_func. i'll se
| |
86 assert_array_equals(seenStates, [xhr.OPENED, xhr.HEADERS_RECEIVED, x hr.DONE]); | 105 assert_equals(xhr.readyState, xhr.UNSENT, "xhr.readyState after abort() call"); |
87 abortInHeadersReceivedTest.done(); | 106 assert_array_equals(seenStates, [xhr.OPENED, xhr.HEADERS_RECEIVE D, xhr.DONE]); |
107 }); | |
108 setTimeout(abortInHeadersReceivedTest.step_func(function() { | |
109 assert_true(abortFired, "Expected 'abort' event to have fired in HEADERS_RECEIVED state."); | |
110 abortInHeadersReceivedTest.done(); | |
111 }), TIME_DELAY_ABORT_DELIVERY); | |
88 return; | 112 return; |
89 | 113 |
90 case xhr.UNSENT: | 114 case xhr.UNSENT: |
91 case xhr.LOADING: | 115 case xhr.LOADING: |
92 default: | 116 default: |
93 assert_unreached("Unexpected readyState: " + xhr.readyState) | 117 assert_unreached("Unexpected readyState: " + xhr.readyState) |
94 return; | 118 return; |
95 } | 119 } |
96 }); | 120 }); |
121 var abortFired = false; | |
122 xhr.onabort = function () { | |
123 abortFired = true; | |
124 }; | |
97 xhr.open("GET", "resources/test.ogv", true); | 125 xhr.open("GET", "resources/test.ogv", true); |
98 xhr.send(); | 126 xhr.send(); |
99 }); | 127 }); |
100 | 128 |
101 var abortInLoadingTest = async_test("Test onreadystatechange invocation when abo rt()-ed in LOADING state."); | 129 var abortInLoadingTest = async_test("Test onreadystatechange + onabort invocatio n when abort()-ed in LOADING state."); |
102 abortInLoadingTest.step(function() | 130 abortInLoadingTest.step(function() |
103 { | 131 { |
104 var xhr = new XMLHttpRequest; | 132 var xhr = new XMLHttpRequest; |
105 var seenStates = []; | 133 var seenStates = []; |
106 xhr.onreadystatechange = abortInLoadingTest.step_func(function() { | 134 xhr.onreadystatechange = abortInLoadingTest.step_func(function() { |
107 seenStates.push(xhr.readyState); | 135 seenStates.push(xhr.readyState); |
108 | 136 |
109 switch (xhr.readyState) { | 137 switch (xhr.readyState) { |
110 case xhr.OPENED: | 138 case xhr.OPENED: |
111 case xhr.HEADERS_RECEIVED: | 139 case xhr.HEADERS_RECEIVED: |
112 case xhr.DONE: | 140 case xhr.DONE: |
113 return; | 141 return; |
114 | 142 |
115 case xhr.LOADING: | 143 case xhr.LOADING: |
116 xhr.abort(); | 144 xhr.abort(); |
117 assert_equals(xhr.readyState, xhr.UNSENT, "xhr.readyState after abor t() call"); | 145 abortInLoadingTest.step(function () { |
118 assert_array_equals(seenStates, [xhr.OPENED, xhr.HEADERS_RECEIVED, x hr.LOADING, xhr.DONE]); | 146 assert_equals(xhr.readyState, xhr.UNSENT, "xhr.readyState after abort() call"); |
119 abortInLoadingTest.done(); | 147 assert_array_equals(seenStates, [xhr.OPENED, xhr.HEADERS_RECEIVE D, xhr.LOADING, xhr.DONE]); |
148 }); | |
149 setTimeout(abortInLoadingTest.step_func(function() { | |
150 assert_true(abortFired, "Expected 'abort' event to have fired in LOADING state."); | |
151 abortInLoadingTest.done(); | |
152 }), TIME_DELAY_ABORT_DELIVERY); | |
120 return; | 153 return; |
121 | 154 |
122 case xhr.UNSENT: | 155 case xhr.UNSENT: |
123 default: | 156 default: |
124 assert_unreached("Unexpected readyState: " + xhr.readyState) | 157 assert_unreached("Unexpected readyState: " + xhr.readyState) |
125 return; | 158 return; |
126 } | 159 } |
127 }); | 160 }); |
161 var abortFired = false; | |
162 xhr.onabort = function () { | |
163 abortFired = true; | |
164 }; | |
128 xhr.open("GET", "resources/test.ogv", true); | 165 xhr.open("GET", "resources/test.ogv", true); |
129 xhr.send(); | 166 xhr.send(); |
130 }); | 167 }); |
131 | 168 |
132 var abortInDoneTest = async_test("Test onreadystatechange invocation when abort( )-ed in DONE state."); | 169 var abortInDoneTest = async_test("Test onreadystatechange + onabort invocation w hen abort()-ed in DONE state."); |
133 abortInDoneTest.step(function() | 170 abortInDoneTest.step(function() |
134 { | 171 { |
135 var xhr = new XMLHttpRequest; | 172 var xhr = new XMLHttpRequest; |
136 var seenStates = []; | 173 var seenStates = []; |
137 xhr.onreadystatechange = abortInDoneTest.step_func(function() { | 174 xhr.onreadystatechange = abortInDoneTest.step_func(function() { |
138 seenStates.push(xhr.readyState); | 175 seenStates.push(xhr.readyState); |
139 | 176 |
140 switch (xhr.readyState) { | 177 switch (xhr.readyState) { |
141 case xhr.OPENED: | 178 case xhr.OPENED: |
142 case xhr.HEADERS_RECEIVED: | 179 case xhr.HEADERS_RECEIVED: |
143 case xhr.LOADING: | 180 case xhr.LOADING: |
144 return; | 181 return; |
145 | 182 |
146 case xhr.DONE: | 183 case xhr.DONE: |
147 xhr.abort(); | 184 xhr.abort(); |
148 assert_equals(xhr.readyState, xhr.UNSENT, "xhr.readyState after abor t() call"); | 185 abortInDoneTest.step(function () { |
149 assert_array_equals(seenStates, [xhr.OPENED, xhr.HEADERS_RECEIVED, x hr.LOADING, xhr.DONE]); | 186 assert_equals(xhr.readyState, xhr.UNSENT, "xhr.readyState after abort() call"); |
150 abortInDoneTest.done(); | 187 assert_array_equals(seenStates, [xhr.OPENED, xhr.HEADERS_RECEIVE D, xhr.LOADING, xhr.DONE]); |
188 }); | |
189 | |
190 setTimeout(abortInDoneTest.step_func(function() { | |
191 abortInDoneTest.done(); | |
192 }), TIME_DELAY_ABORT_DELIVERY); | |
151 return; | 193 return; |
152 | 194 |
153 case xhr.UNSENT: | 195 case xhr.UNSENT: |
154 default: | 196 default: |
155 assert_unreached("Unexpected readyState: " + xhr.readyState) | 197 assert_unreached("Unexpected readyState: " + xhr.readyState) |
156 return; | 198 return; |
157 } | 199 } |
158 }); | 200 }); |
201 xhr.onabort = abortInDoneTest.step_func(function () { | |
202 assert_unreached("abort() should not cause the abort event to fire"); | |
203 }); | |
159 xhr.open("GET", "resources/test.ogv", true); | 204 xhr.open("GET", "resources/test.ogv", true); |
160 xhr.send(); | 205 xhr.send(); |
161 }); | 206 }); |
162 </script> | 207 </script> |
163 </body> | 208 </body> |
164 </html> | 209 </html> |
OLD | NEW |