Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(303)

Side by Side Diff: LayoutTests/http/tests/xmlhttprequest/readystatechange-and-abort.html

Issue 60203010: XHR.abort(): no event dispatching in completed/non-started states. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698