Chromium Code Reviews| Index: LayoutTests/http/tests/xmlhttprequest/response-stream-cancel.html |
| diff --git a/LayoutTests/http/tests/xmlhttprequest/response-stream-cancel.html b/LayoutTests/http/tests/xmlhttprequest/response-stream-cancel.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..1601c90931692fae39186d202fdd03ba1990a7e0 |
| --- /dev/null |
| +++ b/LayoutTests/http/tests/xmlhttprequest/response-stream-cancel.html |
| @@ -0,0 +1,73 @@ |
| +<!DOCTYPE html> |
| +<html> |
| +<body> |
|
tyoshino (SeeGerritForStatus)
2014/08/15 09:32:06
omit html and body?
yhirano
2014/08/15 09:51:34
Done.
|
| +<script src="../resources/testharness.js"></script> |
| +<script src="../resources/testharnessreport.js"></script> |
| +<script type="text/javascript"> |
| +var test = async_test('Test canceling XMLHttpRequest with responseType set to "stream".'); |
| + |
| +test.step(function() |
| +{ |
| + var xhr = new XMLHttpRequest; |
| + |
| + xhr.responseType = 'stream'; |
| + assert_equals(xhr.responseType, 'stream', 'xhr.responseType'); |
| + |
| + assert_equals(xhr.readyState, xhr.UNSENT, 'xhr.readyState'); |
| + assert_equals(xhr.response, null, 'xhr.response during UNSENT'); |
|
tyoshino (SeeGerritForStatus)
2014/08/15 09:32:06
let's omit these (L14-17) as well as response-stre
yhirano
2014/08/15 09:51:34
Done.
|
| + |
| + var seenStates = []; |
| + |
| + xhr.onreadystatechange = test.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: |
| + assert_equals(xhr.response, null, 'xhr.response during OPENED'); |
| + return; |
| + |
| + case xhr.HEADERS_RECEIVED: |
| + assert_equals(xhr.response, null, 'xhr.response during HEADERS_RECEIVED'); |
| + return; |
| + |
| + case xhr.LOADING: |
| + var stream = xhr.response; |
| + assert_true(stream instanceof ReadableStream, |
| + 'xhr.response should be ReadableStream during LOADING'); |
| + stream.cancel('canceled via ReadableStream.cancel'); |
| + assert_equals(stream.state, 'closed', 'stream.state after cancel'); |
| + |
| + // Check that we saw all states. |
| + assert_array_equals(seenStates, |
| + [xhr.OPENED, xhr.HEADERS_RECEIVED, xhr.LOADING, xhr.DONE]); |
| + |
| + assert_equals(xhr.readyState, xhr.UNSENT, 'xhr.readyState after cancel'); |
| + assert_equals(xhr.response, null, 'xhr.response after cancel'); |
| + stream.closed.then(test.step_func(function(value) { |
| + assert_equals(value, undefined, |
| + 'stream.closed should be resolved with undefined'); |
| + test.done(); |
| + }), test.step_func(function() { |
| + assert_unreached('stream.closed should not be rejected'); |
| + })); |
|
tyoshino (SeeGerritForStatus)
2014/08/15 09:32:06
blank line?
yhirano
2014/08/15 09:51:34
Done.
|
| + case xhr.DONE: |
| + return; |
| + |
| + default: |
| + assert_unreached('Unexpected readyState: ' + xhr.readyState) |
| + return; |
| + } |
| + }); |
| + |
| + xhr.open('GET', '../resources/load-and-stall.php?name=test.ogv&stallAt=32768&stallFor=10', true); |
| + xhr.send(); |
| +}); |
| +</script> |
| +</body> |
| +</html> |