OLD | NEW |
(Empty) | |
| 1 <!DOCTYPE html> |
| 2 <html> |
| 3 <body> |
| 4 <script src="../resources/testharness.js"></script> |
| 5 <script src="../resources/testharnessreport.js"></script> |
| 6 <script type="text/javascript"> |
| 7 var test = async_test('Test canceling XMLHttpRequest with responseType set to "s
tream".'); |
| 8 |
| 9 test.step(function() |
| 10 { |
| 11 var xhr = new XMLHttpRequest; |
| 12 |
| 13 xhr.responseType = 'stream'; |
| 14 assert_equals(xhr.responseType, 'stream', 'xhr.responseType'); |
| 15 |
| 16 assert_equals(xhr.readyState, xhr.UNSENT, 'xhr.readyState'); |
| 17 assert_equals(xhr.response, null, 'xhr.response during UNSENT'); |
| 18 |
| 19 var seenStates = []; |
| 20 |
| 21 xhr.onreadystatechange = test.step_func(function() { |
| 22 // onreadystatechange can be invoked multiple times in LOADING state. |
| 23 if (seenStates.length == 0 || xhr.readyState != seenStates[seenStates.le
ngth - 1]) |
| 24 seenStates.push(xhr.readyState); |
| 25 |
| 26 switch (xhr.readyState) { |
| 27 case xhr.UNSENT: |
| 28 assert_unreached('Unexpected readyState: UNSENT'); |
| 29 return; |
| 30 |
| 31 case xhr.OPENED: |
| 32 assert_equals(xhr.response, null, 'xhr.response during OPENED'); |
| 33 return; |
| 34 |
| 35 case xhr.HEADERS_RECEIVED: |
| 36 assert_equals(xhr.response, null, 'xhr.response during HEADERS_RECEI
VED'); |
| 37 return; |
| 38 |
| 39 case xhr.LOADING: |
| 40 var stream = xhr.response; |
| 41 assert_true(stream instanceof ReadableStream, |
| 42 'xhr.response should be ReadableStream during LOADING'); |
| 43 stream.cancel('canceled via ReadableStream.cancel'); |
| 44 assert_equals(stream.state, 'closed', 'stream.state after cancel'); |
| 45 |
| 46 // Check that we saw all states. |
| 47 assert_array_equals(seenStates, |
| 48 [xhr.OPENED, xhr.HEADERS_RECEIVED, xhr.LOADING,
xhr.DONE]); |
| 49 |
| 50 assert_equals(xhr.readyState, xhr.UNSENT, 'xhr.readyState after canc
el'); |
| 51 assert_equals(xhr.response, null, 'xhr.response after cancel'); |
| 52 stream.closed.then(test.step_func(function(value) { |
| 53 assert_equals(value, undefined, |
| 54 'stream.closed should be resolved with undefined'); |
| 55 test.done(); |
| 56 }), test.step_func(function() { |
| 57 assert_unreached('stream.closed should not be rejected'); |
| 58 })); |
| 59 case xhr.DONE: |
| 60 return; |
| 61 |
| 62 default: |
| 63 assert_unreached('Unexpected readyState: ' + xhr.readyState) |
| 64 return; |
| 65 } |
| 66 }); |
| 67 |
| 68 xhr.open('GET', '../resources/load-and-stall.php?name=test.ogv&stallAt=32768
&stallFor=10', true); |
| 69 xhr.send(); |
| 70 }); |
| 71 </script> |
| 72 </body> |
| 73 </html> |
OLD | NEW |