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 // FIXME: Check loading from Stream after abort once loading API is ready. | 7 var testInLoadingState = async_test('Test aborting XMLHttpRequest with responseT ype set to "stream" in LOADING state.'); |
| 8 var testInLoadingState = async_test("Test aborting XMLHttpRequest with responseT ype set to 'stream' in LOADING state."); | |
| 9 | 8 |
| 10 testInLoadingState.step(function() | 9 testInLoadingState.step(function() |
| 11 { | 10 { |
| 12 var xhr = new XMLHttpRequest; | 11 var xhr = new XMLHttpRequest; |
| 13 | 12 |
| 14 xhr.responseType = "legacystream"; | 13 xhr.responseType = 'stream'; |
| 15 | 14 |
| 16 var seenStates = []; | 15 var seenStates = []; |
| 17 | 16 |
| 18 xhr.onreadystatechange = testInLoadingState.step_func(function() { | 17 xhr.onreadystatechange = testInLoadingState.step_func(function() { |
| 19 // onreadystatechange can be invoked multiple times in LOADING state. | 18 // onreadystatechange can be invoked multiple times in LOADING state. |
| 20 if (seenStates.length == 0 || xhr.readyState != seenStates[seenStates.le ngth - 1]) | 19 if (seenStates.length == 0 || xhr.readyState != seenStates[seenStates.le ngth - 1]) |
| 21 seenStates.push(xhr.readyState); | 20 seenStates.push(xhr.readyState); |
| 22 | 21 |
| 23 switch (xhr.readyState) { | 22 switch (xhr.readyState) { |
| 24 case xhr.UNSENT: | 23 case xhr.UNSENT: |
| 25 assert_unreached('Unexpected readyState: UNSENT'); | 24 assert_unreached('Unexpected readyState: UNSENT'); |
| 26 return; | 25 return; |
| 27 | 26 |
| 28 case xhr.OPENED: | 27 case xhr.OPENED: |
| 29 case xhr.HEADERS_RECEIVED: | 28 case xhr.HEADERS_RECEIVED: |
| 30 return; | 29 return; |
| 31 | 30 |
| 32 case xhr.LOADING: | 31 case xhr.LOADING: |
| 32 var stream = xhr.response; | |
| 33 assert_true(stream instanceof ReadableStream, 'xhr.response shoud be ReadableStream'); | |
| 34 assert_equals(stream.state, 'readable', 'stream state before abort() call'); | |
| 35 assert_array_equals(seenStates, [xhr.OPENED, xhr.HEADERS_RECEIVED, x hr.LOADING]); | |
| 36 | |
| 33 xhr.abort(); | 37 xhr.abort(); |
| 34 | 38 |
| 35 assert_equals(xhr.readyState, xhr.DONE, "xhr.readyState after abort( ) call"); | 39 assert_equals(stream.state, 'errored', 'stream state after abort() c all'); |
| 36 assert_equals(xhr.response, null, "xhr.response after abort() call") ; | 40 assert_equals(xhr.readyState, xhr.UNSENT, 'xhr.readyState after abor t() call'); |
|
tyoshino (SeeGerritForStatus)
2014/08/15 09:32:06
oh, why we need to change this? yeah, here it shou
yhirano
2014/08/15 09:51:34
because xhr.abort fires readyStateChange synchrono
| |
| 37 return; | 41 assert_equals(xhr.response, null, 'xhr.response after abort() call') ; |
| 38 | |
| 39 case xhr.DONE: | |
| 40 assert_array_equals(seenStates, [xhr.OPENED, xhr.HEADERS_RECEIVED, x hr.LOADING, xhr.DONE]); | 42 assert_array_equals(seenStates, [xhr.OPENED, xhr.HEADERS_RECEIVED, x hr.LOADING, xhr.DONE]); |
| 41 testInLoadingState.done(); | 43 testInLoadingState.done(); |
| 42 return; | 44 return; |
| 43 | 45 |
| 46 case xhr.DONE: | |
| 47 return; | |
| 48 | |
| 44 default: | 49 default: |
| 45 assert_unreached('Unexpected readyState: ' + xhr.readyState); | 50 assert_unreached('Unexpected readyState: ' + xhr.readyState); |
| 46 return; | 51 return; |
| 47 } | 52 } |
| 48 }); | 53 }); |
| 49 | 54 |
| 50 xhr.open('GET', '../resources/test.ogv', true); | 55 xhr.open('GET', '../resources/test.ogv', true); |
| 51 xhr.send(); | 56 xhr.send(); |
| 52 }); | 57 }); |
| 53 | 58 |
| 54 var testInDoneState = async_test("Test aborting XMLHttpRequest with responseType set to 'stream' in DONE state."); | 59 var testInDoneState = async_test('Test aborting XMLHttpRequest with responseType set to "stream" in DONE state.'); |
| 55 | 60 |
| 56 testInDoneState.step(function() | 61 testInDoneState.step(function() |
| 57 { | 62 { |
| 58 var xhr = new XMLHttpRequest; | 63 var xhr = new XMLHttpRequest; |
| 59 | 64 |
| 60 xhr.responseType = "legacystream"; | 65 xhr.responseType = 'stream'; |
| 61 | 66 |
| 62 var seenStates = []; | 67 var seenStates = []; |
| 63 | 68 |
| 64 xhr.onreadystatechange = testInDoneState.step_func(function() { | 69 xhr.onreadystatechange = testInDoneState.step_func(function() { |
| 65 // onreadystatechange can be invoked multiple times in LOADING state. | 70 // onreadystatechange can be invoked multiple times in LOADING state. |
| 66 if (seenStates.length == 0 || xhr.readyState != seenStates[seenStates.le ngth - 1]) | 71 if (seenStates.length == 0 || xhr.readyState != seenStates[seenStates.le ngth - 1]) |
| 67 seenStates.push(xhr.readyState); | 72 seenStates.push(xhr.readyState); |
| 68 | 73 |
| 69 switch (xhr.readyState) { | 74 switch (xhr.readyState) { |
| 70 case xhr.UNSENT: | 75 case xhr.UNSENT: |
| 71 case xhr.OPENED: | 76 case xhr.OPENED: |
| 72 case xhr.HEADERS_RECEIVED: | 77 case xhr.HEADERS_RECEIVED: |
| 73 case xhr.LOADING: | 78 case xhr.LOADING: |
| 74 return; | 79 return; |
| 75 | 80 |
| 76 case xhr.DONE: | 81 case xhr.DONE: |
| 77 assert_equals(xhr.status, 200, "xhr.status"); | 82 var stream = xhr.response; |
| 78 assert_not_equals(xhr.response, null, "xhr.response during DONE"); | 83 assert_true(stream instanceof ReadableStream, 'xhr.response shoud be ReadableStream'); |
| 84 assert_equals(stream.state, 'readable', 'stream state before abort() call'); | |
| 85 assert_equals(xhr.status, 200, 'xhr.status'); | |
| 86 assert_not_equals(xhr.response, null, 'xhr.response during DONE'); | |
| 79 | 87 |
| 80 xhr.abort(); | 88 xhr.abort(); |
| 81 | 89 |
| 82 assert_equals(xhr.readyState, xhr.UNSENT, "xhr.readyState after abor t() call"); | 90 assert_equals(stream.state, 'errored', 'stream state after abort() c all'); |
| 83 assert_equals(xhr.response, null, "xhr.response after abort() call") ; | 91 assert_equals(xhr.readyState, xhr.UNSENT, 'xhr.readyState after abor t() call'); |
| 92 assert_equals(xhr.response, null, 'xhr.response after abort() call') ; | |
| 84 | 93 |
| 85 assert_array_equals(seenStates, [xhr.OPENED, xhr.HEADERS_RECEIVED, x hr.LOADING, xhr.DONE]); | 94 assert_array_equals(seenStates, [xhr.OPENED, xhr.HEADERS_RECEIVED, x hr.LOADING, xhr.DONE]); |
| 86 testInDoneState.done(); | 95 testInDoneState.done(); |
| 87 return; | 96 return; |
| 88 | 97 |
| 89 default: | 98 default: |
| 90 assert_unreached('Unexpected readyState: ' + xhr.readyState); | 99 assert_unreached('Unexpected readyState: ' + xhr.readyState); |
| 91 return; | 100 return; |
| 92 } | 101 } |
| 93 }); | 102 }); |
| 94 | 103 |
| 95 xhr.open('GET', '../resources/test.ogv', true); | 104 xhr.open('GET', '../resources/test.ogv', true); |
| 96 xhr.send(); | 105 xhr.send(); |
| 97 }); | 106 }); |
| 98 </script> | 107 </script> |
| 99 </body> | 108 </body> |
| 100 </html> | 109 </html> |
| OLD | NEW |