| Index: LayoutTests/http/tests/fetch/script-tests/fetch-body-mixin.js
|
| diff --git a/LayoutTests/http/tests/fetch/script-tests/fetch-body-mixin.js b/LayoutTests/http/tests/fetch/script-tests/fetch-body-mixin.js
|
| index 2e52fe8df97de685a89a0d7a972028c0244fd490..99070d1eea798709dd213a87645e48c84cfae5c9 100644
|
| --- a/LayoutTests/http/tests/fetch/script-tests/fetch-body-mixin.js
|
| +++ b/LayoutTests/http/tests/fetch/script-tests/fetch-body-mixin.js
|
| @@ -13,40 +13,16 @@ function arrayBufferToString(buffer) {
|
| }
|
|
|
| function readStream(reader, values) {
|
| - while (reader.state === 'readable') {
|
| - values.push(reader.read());
|
| - }
|
| - if (reader.state === 'waiting') {
|
| - return reader.ready.then(function() {
|
| + reader.read().then(function(r) {
|
| + if (!r.done) {
|
| + values.push(r.value);
|
| readStream(reader, values);
|
| - });
|
| - }
|
| + }
|
| + });
|
| return reader.closed;
|
| }
|
|
|
| sequential_promise_test(function(test) {
|
| - var response;
|
| - var reader;
|
| - return fetch('/fetch/resources/doctype.html')
|
| - .then(function(resp) {
|
| - response = resp;
|
| - reader = resp.body.getReader();
|
| - return reader.ready;
|
| - })
|
| - .then(function() {
|
| - if (reader.state !== 'readable') {
|
| - return Promise.reject(TypeError('stream state get wrong'));
|
| - } else {
|
| - reader.releaseLock();
|
| - return response.text();
|
| - }
|
| - })
|
| - .then(function(text) {
|
| - assert_equals(text, '<!DOCTYPE html>\n', 'response.body');
|
| - })
|
| - }, 'FetchTextAfterStreamGetReadableTest');
|
| -
|
| -sequential_promise_test(function(test) {
|
| return fetch('/fetch/resources/doctype.html')
|
| .then(function(response) {
|
| // Accessing the body property makes the stream start working.
|
| @@ -151,35 +127,34 @@ sequential_promise_test(function(test) {
|
| expectedText += i;
|
|
|
| var values = [];
|
| - function partialReadResponse(response, read_count) {
|
| - var reader = response.body.getReader();
|
| - function read(resolve, reject) {
|
| - while (reader.state === 'readable') {
|
| - values.push(reader.read());
|
| - if (values.length > read_count) {
|
| - reader.releaseLock();
|
| - resolve();
|
| - return;
|
| + function partialReadResponse(reader, read_count) {
|
| + return Promise.resolve().then(function() {
|
| + var promise = Promise.resolve();
|
| + for (var i = 0; i < read_count; ++i) {
|
| + promise = reader.read().then(function(r) {
|
| + if (!r.done) {
|
| + values.push(r.value);
|
| + }
|
| + });
|
| }
|
| - }
|
| - if (reader.state === 'closed') {
|
| - reader.releaseLock();
|
| - resolve();
|
| - return;
|
| - }
|
| - reader.ready.then(function() {
|
| - read(resolve, reject);
|
| - }).catch(reject);
|
| - }
|
| - return new Promise(read);
|
| + return promise;
|
| + });
|
| }
|
| var response;
|
| + var reader;
|
| return fetch('/fetch/resources/progressive.php')
|
| .then(function(res) {
|
| response = res;
|
| - return partialReadResponse(response, 10);
|
| + reader = response.body.getReader();
|
| + return partialReadResponse(reader, 10);
|
| })
|
| .then(function() {
|
| + return response.text().then(unreached_rejection(test), function() {
|
| + // response.text() should fail because we have a reader.
|
| + });
|
| + })
|
| + .then(function() {
|
| + reader.releaseLock();
|
| return Promise.all(
|
| values.map(arrayBufferToString).concat(response.text()));
|
| })
|
|
|