OLD | NEW |
(Empty) | |
| 1 'use strict'; |
| 2 |
| 3 if (self.importScripts) { |
| 4 self.importScripts('../resources/test-utils.js'); |
| 5 self.importScripts('/resources/testharness.js'); |
| 6 } |
| 7 |
| 8 promise_test(() => { |
| 9 |
| 10 let controller; |
| 11 new ReadableStream({ |
| 12 start(c) { |
| 13 controller = c; |
| 14 } |
| 15 }); |
| 16 |
| 17 garbageCollect(); |
| 18 |
| 19 return delay(50).then(() => { |
| 20 controller.close(); |
| 21 assert_throws(new TypeError(), () => controller.close(), 'close should throw
a TypeError the second time'); |
| 22 assert_throws(new TypeError(), () => controller.error(), 'error should throw
a TypeError on a closed stream'); |
| 23 }); |
| 24 |
| 25 }, 'ReadableStreamController methods should continue working properly when scrip
ts lose their reference to the ' + |
| 26 'readable stream'); |
| 27 |
| 28 promise_test(() => { |
| 29 |
| 30 let controller; |
| 31 |
| 32 const closedPromise = new ReadableStream({ |
| 33 start(c) { |
| 34 controller = c; |
| 35 } |
| 36 }).getReader().closed; |
| 37 |
| 38 garbageCollect(); |
| 39 |
| 40 return delay(50).then(() => controller.close()).then(() => closedPromise); |
| 41 |
| 42 }, 'ReadableStream closed promise should fulfill even if the stream and reader J
S references are lost'); |
| 43 |
| 44 promise_test(t => { |
| 45 |
| 46 const theError = new Error('boo'); |
| 47 let controller; |
| 48 |
| 49 const closedPromise = new ReadableStream({ |
| 50 start(c) { |
| 51 controller = c; |
| 52 } |
| 53 }).getReader().closed; |
| 54 |
| 55 garbageCollect(); |
| 56 |
| 57 return delay(50).then(() => controller.error(theError)) |
| 58 .then(() => promise_rejects(t, theError, closedPromise)); |
| 59 |
| 60 }, 'ReadableStream closed promise should reject even if stream and reader JS ref
erences are lost'); |
| 61 |
| 62 promise_test(() => { |
| 63 |
| 64 const rs = new ReadableStream({}); |
| 65 |
| 66 rs.getReader(); |
| 67 |
| 68 garbageCollect(); |
| 69 |
| 70 return delay(50).then(() => assert_throws(new TypeError(), () => rs.getReader(
), |
| 71 'old reader should still be locking the stream even after garbage collection
')); |
| 72 |
| 73 }, 'Garbage-collecting a ReadableStreamReader should not unlock its stream'); |
| 74 |
| 75 done(); |
OLD | NEW |