| 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 | 
|---|