| 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_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 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 |