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

Side by Side Diff: LayoutTests/http/tests/fetch/script-tests/stream-reader.js

Issue 901013002: Revert of Introduce ExclusiveStreamReader. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 10 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
« no previous file with comments | « no previous file | LayoutTests/http/tests/fetch/serviceworker/stream-reader.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 if (self.importScripts) {
2 importScripts('/fetch/resources/fetch-test-helpers.js');
3 }
4
5 function read_until_end(reader) {
6 var chunks = [];
7 function rec(resolve, reject) {
8 while (reader.state === 'readable') {
9 chunks.push(reader.read());
10 }
11 if (reader.state === 'closed') {
12 resolve(chunks);
13 return;
14 }
15 if (reader.state === 'errored') {
16 resolve(reader.closed);
17 }
18 reader.ready.then(function() {
19 rec(resolve, reject);
20 }).catch(reject);
21 }
22 return new Promise(rec);
23 }
24
25 promise_test(function(t) {
26 return fetch('/fetch/resources/doctype.html').then(function(res) {
27 var stream = res.body;
28 var reader = stream.getReader();
29 assert_true(reader.isActive);
30 assert_throws({name: 'TypeError'}, function() { stream.getReader() });
31 reader.releaseLock();
32 var another = stream.getReader();
33 assert_not_equals(another, reader);
34 assert_false(reader.isActive);
35 assert_true(another.isActive);
36 });
37 }, 'ExclusiveStreamReader acquisition / releasing');
38
39 promise_test(function(t) {
40 function wait_until_readable(reader) {
41 return reader.ready.then(function() {
42 if (reader.state === 'waiting') {
43 return wait_until_readable(reader);
44 }
45 if (reader.state === 'readable') {
46 return undefined;
47 }
48 return Promise.reject(new Error('state = ' + reader.state));
49 });
50 }
51 var stream;
52 var reader;
53 return fetch('/fetch/resources/doctype.html').then(function(res) {
54 stream = res.body;
55 reader = stream.getReader();
56 return wait_until_readable(reader);
57 }).then(function() {
58 assert_equals(reader.state, 'readable');
59 assert_equals(stream.state, 'waiting');
60 reader.releaseLock();
61 assert_equals(reader.state, 'closed');
62 assert_equals(stream.state, 'readable');
63 var another = stream.getReader();
64 assert_equals(reader.state, 'closed');
65 assert_equals(stream.state, 'waiting');
66 assert_equals(another.state, 'readable');
67 });
68 }, 'ExclusiveStreamReader state masking');
69
70 promise_test(function(t) {
71 return fetch('/fetch/resources/doctype.html').then(function(res) {
72 var reader = res.body.getReader();
73 return read_until_end(reader);
74 }).then(function(chunks) {
75 var size = 0;
76 for (var chunk of chunks) {
77 size += chunk.byteLength;
78 }
79 var buffer = new Uint8Array(size);
80 var offset = 0;
81 for (var chunk of chunks) {
82 buffer.set(new Uint8Array(chunk), offset);
83 offset += chunk.byteLength;
84 }
85 return new TextDecoder().decode(buffer);
86 }).then(function(string) {
87 assert_equals(string, '<!DOCTYPE html>\n');
88 });
89 }, 'read contents with ExclusiveStreamReader');
90
91 done();
OLDNEW
« no previous file with comments | « no previous file | LayoutTests/http/tests/fetch/serviceworker/stream-reader.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698