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