Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(317)

Side by Side Diff: LayoutTests/http/tests/xmlhttprequest/resources/response-stream.js

Issue 1004623007: Streams Implementation Update: async read (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@stream-reader-read
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698