38 lines
1.1 KiB
JavaScript
38 lines
1.1 KiB
JavaScript
// META: global=window,worker
|
|
// META: script=/common/gc.js
|
|
'use strict';
|
|
|
|
// See https://crbug.com/335506658 for details.
|
|
promise_test(async () => {
|
|
const closed = new ReadableStream({
|
|
pull(controller) {
|
|
controller.enqueue('is there anybody in there?');
|
|
}
|
|
}).getReader().closed;
|
|
// 3 GCs are actually required to trigger the bug at time of writing.
|
|
for (let i = 0; i < 5; ++i)
|
|
await garbageCollect();
|
|
}, 'Garbage-collecting a stream along with its reader should not crash');
|
|
|
|
promise_test(async () => {
|
|
let reader = new ReadableStream({
|
|
pull() { }
|
|
}).getReader();
|
|
const promise = reader.read();
|
|
reader = null;
|
|
for (let i = 0; i < 5; ++i)
|
|
await garbageCollect();
|
|
}, 'Garbage-collecting a stream with a pending read should not crash');
|
|
|
|
promise_test(async () => {
|
|
let reader = new ReadableStream({
|
|
type: "bytes",
|
|
pull() { return new Promise(resolve => {}); }
|
|
}).getReader({mode: "byob"});
|
|
const promise = reader.read(new Uint8Array(42));
|
|
reader = null;
|
|
for (let i = 0; i < 5; ++i)
|
|
await garbageCollect();
|
|
}, 'Garbage-collecting a stream with a pending BYOB read should not crash');
|
|
|
|
|