1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
// META: global=window,worker,shadowrealm-in-window
// META: script=/resources/WebIDLParser.js
// META: script=/resources/idlharness.js
// META: timeout=long
idl_test(
['streams'],
['dom'], // for AbortSignal
async idl_array => {
// Empty try/catches ensure that if something isn't implemented (e.g., readable byte streams, or writable streams)
// the harness still sets things up correctly. Note that the corresponding interface tests will still fail.
try {
new ReadableStream({
start(c) {
self.readableStreamDefaultController = c;
}
});
} catch {}
try {
new ReadableStream({
start(c) {
self.readableByteStreamController = c;
},
type: 'bytes'
});
} catch {}
try {
let resolvePullCalledPromise;
const pullCalledPromise = new Promise(resolve => {
resolvePullCalledPromise = resolve;
});
const stream = new ReadableStream({
pull(c) {
self.readableStreamByobRequest = c.byobRequest;
resolvePullCalledPromise();
},
type: 'bytes'
});
const reader = stream.getReader({ mode: 'byob' });
reader.read(new Uint8Array(1));
await pullCalledPromise;
} catch {}
try {
new WritableStream({
start(c) {
self.writableStreamDefaultController = c;
}
});
} catch {}
try {
new TransformStream({
start(c) {
self.transformStreamDefaultController = c;
}
});
} catch {}
idl_array.add_objects({
ReadableStream: ["new ReadableStream()"],
ReadableStreamDefaultReader: ["(new ReadableStream()).getReader()"],
ReadableStreamBYOBReader: ["(new ReadableStream({ type: 'bytes' })).getReader({ mode: 'byob' })"],
ReadableStreamDefaultController: ["self.readableStreamDefaultController"],
ReadableByteStreamController: ["self.readableByteStreamController"],
ReadableStreamBYOBRequest: ["self.readableStreamByobRequest"],
WritableStream: ["new WritableStream()"],
WritableStreamDefaultWriter: ["(new WritableStream()).getWriter()"],
WritableStreamDefaultController: ["self.writableStreamDefaultController"],
TransformStream: ["new TransformStream()"],
TransformStreamDefaultController: ["self.transformStreamDefaultController"],
ByteLengthQueuingStrategy: ["new ByteLengthQueuingStrategy({ highWaterMark: 5 })"],
CountQueuingStrategy: ["new CountQueuingStrategy({ highWaterMark: 5 })"]
});
}
);
|