Chromium Code Reviews| 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 |