| OLD | NEW |
| 1 var global = this; | 1 var global = this; |
| 2 if (global.importScripts) { | 2 if (global.importScripts) { |
| 3 // Worker case | 3 // Worker case |
| 4 importScripts('/resources/testharness.js'); | 4 importScripts('/resources/testharness.js'); |
| 5 } | 5 } |
| 6 | 6 |
| 7 var test = async_test('Test response of XMLHttpRequest with responseType set to
"stream" for various readyState.'); | 7 var test = async_test('Test response of XMLHttpRequest with responseType set to
"stream" for various readyState.'); |
| 8 | 8 |
| 9 test.step(function() { | 9 test.step(function() { |
| 10 var xhr = new XMLHttpRequest; | 10 var xhr = new XMLHttpRequest; |
| 11 | 11 |
| 12 xhr.responseType = 'stream'; | 12 xhr.responseType = 'stream'; |
| 13 assert_equals(xhr.responseType, 'stream', 'xhr.responseType'); | 13 assert_equals(xhr.responseType, 'stream', 'xhr.responseType'); |
| 14 | 14 |
| 15 assert_equals(xhr.readyState, xhr.UNSENT, 'xhr.readyState'); | 15 assert_equals(xhr.readyState, xhr.UNSENT, 'xhr.readyState'); |
| 16 assert_equals(xhr.response, null, 'xhr.response during UNSENT'); | 16 assert_equals(xhr.response, null, 'xhr.response during UNSENT'); |
| 17 | 17 |
| 18 var seenStates = []; | 18 var seenStates = []; |
| 19 | 19 |
| 20 function readStream(reader) { | 20 function readStream(reader) { |
| 21 var chunks = []; | 21 var chunks = []; |
| 22 function rec(resolve, reject) { | 22 function consume() { |
| 23 while (reader.state === 'readable') { | 23 return reader.read().then(function(result) { |
| 24 chunks.push(reader.read()); | 24 if (result.done) { |
| 25 } | 25 return chunks; |
| 26 if (reader.state === 'closed') { | 26 } else { |
| 27 resolve(chunks); | 27 chunks.push(result.value); |
| 28 return; | 28 return consume(); |
| 29 } | 29 } |
| 30 reader.ready.then(function() { | 30 }); |
| 31 rec(resolve, reject); | |
| 32 }).catch(reject); | |
| 33 } | 31 } |
| 34 return new Promise(rec); | 32 return consume(); |
| 35 } | 33 } |
| 36 var streamPromise = undefined; | 34 var streamPromise = undefined; |
| 37 | 35 |
| 38 xhr.onreadystatechange = test.step_func(function() { | 36 xhr.onreadystatechange = test.step_func(function() { |
| 39 // onreadystatechange can be invoked multiple times in LOADING state. | 37 // onreadystatechange can be invoked multiple times in LOADING state. |
| 40 if (seenStates.length == 0 || xhr.readyState != seenStates[seenStates.le
ngth - 1]) | 38 if (seenStates.length == 0 || xhr.readyState != seenStates[seenStates.le
ngth - 1]) |
| 41 seenStates.push(xhr.readyState); | 39 seenStates.push(xhr.readyState); |
| 42 | 40 |
| 43 switch (xhr.readyState) { | 41 switch (xhr.readyState) { |
| 44 case xhr.UNSENT: | 42 case xhr.UNSENT: |
| (...skipping 19 matching lines...) Expand all Loading... |
| 64 assert_equals(xhr.status, 200, 'xhr.status'); | 62 assert_equals(xhr.status, 200, 'xhr.status'); |
| 65 | 63 |
| 66 // Check that we saw all states. | 64 // Check that we saw all states. |
| 67 assert_array_equals(seenStates, | 65 assert_array_equals(seenStates, |
| 68 [xhr.OPENED, xhr.HEADERS_RECEIVED, xhr.LOADING, xhr.DONE]); | 66 [xhr.OPENED, xhr.HEADERS_RECEIVED, xhr.LOADING, xhr.DONE]); |
| 69 var size = 0; | 67 var size = 0; |
| 70 for (var i = 0; i < chunks.length; ++i) { | 68 for (var i = 0; i < chunks.length; ++i) { |
| 71 size += chunks[i].byteLength; | 69 size += chunks[i].byteLength; |
| 72 } | 70 } |
| 73 assert_equals(size, 103746, 'response size'); | 71 assert_equals(size, 103746, 'response size'); |
| 74 return xhr.response.closed; | 72 return xhr.response.getReader().closed; |
| 75 }).then(function() { | 73 }).then(function() { |
| 76 test.done(); | 74 test.done(); |
| 77 }).catch(test.step_func(function(e) { | 75 }).catch(test.step_func(function(e) { |
| 78 throw e; | 76 throw e; |
| 79 })); | 77 })); |
| 80 return; | 78 return; |
| 81 | 79 |
| 82 case xhr.DONE: | 80 case xhr.DONE: |
| 83 return; | 81 return; |
| 84 | 82 |
| 85 default: | 83 default: |
| 86 assert_unreached('Unexpected readyState: ' + xhr.readyState) | 84 assert_unreached('Unexpected readyState: ' + xhr.readyState) |
| 87 return; | 85 return; |
| 88 } | 86 } |
| 89 }); | 87 }); |
| 90 | 88 |
| 91 xhr.open('GET', '/resources/test.ogv', true); | 89 xhr.open('GET', '/resources/test.ogv', true); |
| 92 xhr.send(); | 90 xhr.send(); |
| 93 }); | 91 }); |
| 94 | 92 |
| 95 if (global.importScripts) { | 93 if (global.importScripts) { |
| 96 // Worker case | 94 // Worker case |
| 97 done(); | 95 done(); |
| 98 } | 96 } |
| OLD | NEW |