Chromium Code Reviews| Index: LayoutTests/http/tests/xmlhttprequest/response-stream-abort.html |
| diff --git a/LayoutTests/http/tests/xmlhttprequest/response-stream-abort.html b/LayoutTests/http/tests/xmlhttprequest/response-stream-abort.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..639f6f1bff5e5e30a9f7910d3e33547b74f9f060 |
| --- /dev/null |
| +++ b/LayoutTests/http/tests/xmlhttprequest/response-stream-abort.html |
| @@ -0,0 +1,99 @@ |
| +<!DOCTYPE html> |
| +<html> |
| +<body> |
| +<script src="../resources/testharness.js"></script> |
| +<script src="../resources/testharnessreport.js"></script> |
| +<script type="text/javascript"> |
| +// FIXME: Check loading from Stream after abort once loading API is ready. |
| +var testInLoadingState = async_test("Test aborting XMLHttpRequest with responseType set to 'stream' in LOADING state."); |
| + |
| +testInLoadingState.step(function() |
| +{ |
| + var xhr = new XMLHttpRequest; |
| + |
| + xhr.responseType = "stream"; |
| + |
| + var seenStates = []; |
| + |
| + xhr.onreadystatechange = testInLoadingState.step_func(function() { |
| + // onreadystatechange can be invoked multiple times in LOADING state. |
| + if (seenStates.length == 0 || xhr.readyState != seenStates[seenStates.length - 1]) |
| + seenStates.push(xhr.readyState); |
| + |
| + switch (xhr.readyState) { |
| + case xhr.UNSENT: |
| + assert_unreached('Unexpected readyState: UNSENT'); |
| + return; |
| + |
| + case xhr.OPENED: |
| + case xhr.HEADERS_RECEIVED: |
| + return; |
| + |
| + case xhr.LOADING: |
| + xhr.abort(); |
| + |
| + assert_equals(xhr.readyState, xhr.DONE, "xhr.readyState after abort() call"); |
| + assert_equals(xhr.response, null, "xhr.response after abort() call"); |
| + return; |
| + |
| + case xhr.DONE: |
| + assert_array_equals(seenStates, [xhr.OPENED, xhr.HEADERS_RECEIVED, xhr.LOADING, xhr.DONE]); |
| + testInLoadingState.done(); |
| + return; |
| + |
| + default: |
| + assert_unreached('Unexpected readyState: ' + xhr.readyState); |
| + return; |
| + } |
| + }); |
| + |
| + xhr.open('GET', '../resources/test.ogv', true); |
| + xhr.send(); |
| +}); |
| + |
| +var testInDoneState = async_test("Test aborting XMLHttpRequest with responseType set to 'stream' in DONE state."); |
| + |
| +testInDoneState.step(function() |
| +{ |
| + var xhr = new XMLHttpRequest; |
| + |
| + xhr.responseType = "stream"; |
| + |
| + var seenStates = []; |
| + |
| + xhr.onreadystatechange = testInDoneState.step_func(function() { |
| + // onreadystatechange can be invoked multiple times in LOADING state. |
| + if (seenStates.length == 0 || xhr.readyState != seenStates[seenStates.length - 1]) |
| + seenStates.push(xhr.readyState); |
| + |
| + switch (xhr.readyState) { |
| + case xhr.UNSENT: |
| + case xhr.OPENED: |
| + case xhr.HEADERS_RECEIVED: |
| + case xhr.LOADING: |
| + return; |
| + |
| + case xhr.DONE: |
| + assert_equals(xhr.status, 200, "xhr.status"); |
| + |
|
kinuko
2013/09/05 13:48:41
nit: maybe check xhr.response is not null before a
tyoshino (SeeGerritForStatus)
2013/09/06 04:24:55
Done.
|
| + xhr.abort(); |
| + |
| + assert_equals(xhr.readyState, xhr.UNSENT, "xhr.readyState after abort() call"); |
| + assert_equals(xhr.response, null, "xhr.response after abort() call"); |
| + |
| + assert_array_equals(seenStates, [xhr.OPENED, xhr.HEADERS_RECEIVED, xhr.LOADING, xhr.DONE]); |
| + testInDoneState.done(); |
| + return; |
| + |
| + default: |
| + assert_unreached('Unexpected readyState: ' + xhr.readyState); |
| + return; |
| + } |
| + }); |
| + |
| + xhr.open('GET', '../resources/test.ogv', true); |
| + xhr.send(); |
| +}); |
| +</script> |
| +</body> |
| +</html> |