| 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..4fa00a734c4ea5c79f5e68a8e9e1b6b1d76fe351
|
| --- /dev/null
|
| +++ b/LayoutTests/http/tests/xmlhttprequest/response-stream-abort.html
|
| @@ -0,0 +1,100 @@
|
| +<!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");
|
| + assert_not_equals(xhr.response, null, "xhr.response during 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>
|
|
|