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

Side by Side Diff: third_party/WebKit/LayoutTests/http/tests/fetch/script-tests/response-stream-construction.js

Issue 1506023003: Response construction with a ReadableStream (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years 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
(Empty)
1 // This file contains tests for Response construction with a readable stream.
2 // Move these tests to response.js once the feature gets stable.
3
4 if (self.importScripts) {
5 importScripts('../resources/fetch-test-helpers.js');
6 }
7
8 function read_until_end(reader) {
9 var chunks = [];
10 function consume() {
11 return reader.read().then(function(r) {
12 if (r.done) {
13 return chunks;
14 } else {
15 chunks.push(r.value);
16 return consume();
17 }
18 });
19 }
20 return consume();
21 }
22
23 test(() => {
24 var controller;
25 var stream = new ReadableStream({start: c => controller = c});
26
27 var response = new Response(stream);
28 // TODO(yhirano): This should be assert_equals.
29 assert_not_equals(response.body, stream);
30 }, 'Response constructed with a stream');
31
32 promise_test(() => {
33 var controller;
34 var stream = new ReadableStream({start: c => controller = c});
35 controller.enqueue(new Uint8Array([0x68, 0x65, 0x6c, 0x6c, 0x6f]));
36 controller.enqueue(new Uint8Array([0x77, 0x6f, 0x72, 0x6c, 0x64]));
37 controller.close();
38 assert_false(stream.locked);
39 var response = new Response(stream);
40 var p = response.text().then(t => {
41 assert_equals(t, 'helloworld');
42 });
43 assert_true(stream.locked);
44 return p;
45 }, 'Response constructed with a stream');
46
47 promise_test(() => {
48 var controller;
49 var stream = new ReadableStream({start: c => controller = c});
50 controller.enqueue(new Uint8Array([0x68, 0x65, 0x6c, 0x6c, 0x6f]));
51 controller.enqueue(new Uint8Array([0x77, 0x6f, 0x72, 0x6c, 0x64]));
52 controller.close();
53
54 var response = new Response(stream);
55 return read_until_end(response.body.getReader()).then(chunks => {
56 var decoder = new TextDecoder('utf-8');
57 var r = '';
58 for (var chunk of chunks) {
59 r += decoder.decode(chunk, {stream: true});
60 }
61 r += decoder.decode();
62 assert_equals(r, 'helloworld');
63 });
64 }, 'Response constructed with a stream / Read from body stream');
65
66 promise_test(t => {
67 var controller;
68 var stream = new ReadableStream({start: c => controller = c});
69 setTimeout(() => {
70 controller.enqueue(new Uint8Array([0x68, 0x65, 0x6c, 0x6c, 0x6f]));
71 controller.enqueue(new Uint8Array([0x77, 0x6f, 0x72, 0x6c, 0x64]));
72 controller.error();
73 }, 1);
74 var response = new Response(stream);
75 return response.text().then(unreached_fulfillment(t), e => {
76 assert_equals(e.name, 'TypeError');
77 });
78 }, 'Response constructed with an errored stream');
79
80 promise_test(t => {
81 var controller;
82 var stream = new ReadableStream({start: c => controller = c});
83 stream.getReader();
84 var response = new Response(stream);
85 return response.text().then(unreached_fulfillment(t), e => {
86 assert_equals(e.name, 'TypeError');
87 });
88 }, 'Response constructed with a locked stream');
89
90 promise_test(t => {
91 var controller;
92 var stream = new ReadableStream({start: c => controller = c});
93 setTimeout(() => controller.enqueue(), 1);
94 var response = new Response(stream);
95 return response.text().then(unreached_fulfillment(t), e => {
96 assert_equals(e.name, 'TypeError');
97 });
98 }, 'Response constructed stream with an undefined chunk');
99
100 promise_test(t => {
101 var controller;
102 var stream = new ReadableStream({start: c => controller = c});
103 setTimeout(() => controller.enqueue(null), 1);
104 var response = new Response(stream);
105 return response.text().then(unreached_fulfillment(t), e => {
106 assert_equals(e.name, 'TypeError');
107 });
108 }, 'Response constructed stream with a null chunk');
109
110 promise_test(t => {
111 var controller;
112 var stream = new ReadableStream({start: c => controller = c});
113 setTimeout(() => controller.enqueue('hello'), 1);
114 var response = new Response(stream);
115 return response.text().then(unreached_fulfillment(t), e => {
116 assert_equals(e.name, 'TypeError');
117 });
118 }, 'Response constructed stream with a string chunk');
119
120 done();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698