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

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

Issue 1920703002: [Fetch API] Fix leaky layout tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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 | « third_party/WebKit/LayoutTests/http/tests/fetch/script-tests/response.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 if (self.importScripts) { 1 if (self.importScripts) {
2 importScripts('/fetch/resources/fetch-test-helpers.js'); 2 importScripts('/fetch/resources/fetch-test-helpers.js');
3 importScripts('/streams/resources/rs-utils.js'); 3 importScripts('/streams/resources/rs-utils.js');
4 } 4 }
5 5
6 promise_test(function(t) { 6 promise_test(function(t) {
7 return fetch('/fetch/resources/doctype.html').then(function(res) { 7 return fetch('/fetch/resources/doctype.html').then(function(res) {
8 var stream = res.body; 8 var stream = res.body;
9 var reader = stream.getReader(); 9 var reader = stream.getReader();
10 assert_throws({name: 'TypeError'}, function() { stream.getReader() }); 10 assert_throws({name: 'TypeError'}, function() { stream.getReader() });
11 reader.releaseLock(); 11 reader.releaseLock();
12 var another = stream.getReader(); 12 var another = stream.getReader();
13 assert_not_equals(another, reader); 13 assert_not_equals(another, reader);
14 another.releaseLock();
14 }); 15 });
15 }, 'ReadableStreamReader acquisition / releasing'); 16 }, 'ReadableStreamReader acquisition / releasing');
16 17
17 promise_test(function(t) { 18 promise_test(function(t) {
18 return fetch('/fetch/resources/doctype.html').then(function(res) { 19 return fetch('/fetch/resources/doctype.html').then(function(res) {
19 var reader = res.body.getReader(); 20 var reader = res.body.getReader();
20 return readableStreamToArray(res.body, reader); 21 return readableStreamToArray(res.body, reader);
21 }).then(function(chunks) { 22 }).then(function(chunks) {
22 var size = 0; 23 var size = 0;
23 for (var chunk of chunks) { 24 for (var chunk of chunks) {
24 assert_equals(chunk.constructor, Uint8Array, 'chunk\'s type'); 25 assert_equals(chunk.constructor, Uint8Array, 'chunk\'s type');
25 size += chunk.byteLength; 26 size += chunk.byteLength;
26 } 27 }
27 var buffer = new Uint8Array(size); 28 var buffer = new Uint8Array(size);
28 var offset = 0; 29 var offset = 0;
29 for (var chunk of chunks) { 30 for (var chunk of chunks) {
30 buffer.set(new Uint8Array(chunk), offset); 31 buffer.set(new Uint8Array(chunk), offset);
31 offset += chunk.byteLength; 32 offset += chunk.byteLength;
32 } 33 }
33 return new TextDecoder().decode(buffer); 34 return new TextDecoder().decode(buffer);
34 }).then(function(string) { 35 }).then(function(string) {
35 assert_equals(string, '<!DOCTYPE html>\n'); 36 assert_equals(string, '<!DOCTYPE html>\n');
36 }); 37 });
37 }, 'read contents with ReadableStreamReader'); 38 }, 'read contents with ReadableStreamReader');
38 39
39 promise_test(function(t) { 40 promise_test(function(t) {
40 return fetch('/fetch/resources/progressive.php').then(function(res) { 41 return fetch('/fetch/resources/progressive.php').then(function(res) {
41 assert_false(res.bodyUsed); 42 assert_false(res.bodyUsed);
42 var reader = res.body.getReader(); 43 var reader = res.body.getReader();
43 assert_true(res.bodyUsed); 44 assert_false(res.bodyUsed);
44 return res.text(); 45 return res.text().then(unreached_fulfillment(t), function() {
45 }).then(unreached_rejection(t), function() { 46 // text() should fail because the body is locked.
46 // text() should fail because bodyUsed is set. 47 // TODO(yhirano): Use finally once it gets available.
48 reader.releaseLock();
49 });
47 }); 50 });
48 }, 'acquiring a reader should set bodyUsed.'); 51 }, 'acquiring a reader should not set bodyUsed.');
49 52
50 promise_test(function(t) { 53 promise_test(function(t) {
51 var reader; 54 var reader;
52 var response; 55 var response;
53 return fetch('/fetch/resources/progressive.php').then(function(res) { 56 return fetch('/fetch/resources/progressive.php').then(function(res) {
54 response = res; 57 response = res;
55 reader = res.body.getReader(); 58 reader = res.body.getReader();
56 return reader.read(); 59 return reader.read();
57 }).then(() => { 60 }).then(() => {
58 reader.releaseLock(); 61 reader.releaseLock();
(...skipping 17 matching lines...) Expand all
76 assert_true(res.bodyUsed); 79 assert_true(res.bodyUsed);
77 assert_false(clone.bodyUsed); 80 assert_false(clone.bodyUsed);
78 return clone.arrayBuffer(); 81 return clone.arrayBuffer();
79 }).then(function(r) { 82 }).then(function(r) {
80 assert_equals(r.byteLength, 190); 83 assert_equals(r.byteLength, 190);
81 assert_true(clone.bodyUsed); 84 assert_true(clone.bodyUsed);
82 }); 85 });
83 }, 'Cancelling stream should not affect cloned one.'); 86 }, 'Cancelling stream should not affect cloned one.');
84 87
85 done(); 88 done();
OLDNEW
« no previous file with comments | « third_party/WebKit/LayoutTests/http/tests/fetch/script-tests/response.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698