// META: global=window,worker // 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 })"] }); } );