OLD | NEW |
---|---|
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_rejection(t), function() { |
tyoshino (SeeGerritForStatus)
2016/04/26 08:15:58
unreached_fulfillment
yhirano
2016/04/26 11:15:40
Done.
| |
45 }).then(unreached_rejection(t), function() { | 46 // text() should fail because bodyUsed is set. |
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 Loading... | |
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(); |
OLD | NEW |