mirror of
https://github.com/denoland/deno.git
synced 2024-12-25 16:49:18 -05:00
feat(ext/web): BYOB support for ReadableStream (#12616)
This commit introduces support for BYOB readers in the WHATWG Streams API implementation.
This commit is contained in:
parent
8e31bbbe55
commit
95b2955712
5 changed files with 1321 additions and 315 deletions
File diff suppressed because it is too large
Load diff
19
ext/web/06_streams_types.d.ts
vendored
19
ext/web/06_streams_types.d.ts
vendored
|
@ -17,6 +17,25 @@ interface ReadRequest<R = any> {
|
||||||
errorSteps: (error: any) => void;
|
errorSteps: (error: any) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface ReadIntoRequest {
|
||||||
|
chunkSteps: (chunk: ArrayBufferView) => void;
|
||||||
|
closeSteps: (chunk?: ArrayBufferView) => void;
|
||||||
|
// deno-lint-ignore no-explicit-any
|
||||||
|
errorSteps: (error: any) => void;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface PullIntoDescriptor {
|
||||||
|
buffer: ArrayBuffer;
|
||||||
|
bufferByteLength: number;
|
||||||
|
byteOffset: number;
|
||||||
|
byteLength: number;
|
||||||
|
bytesFilled: number;
|
||||||
|
elementSize: number;
|
||||||
|
// deno-lint-ignore no-explicit-any
|
||||||
|
viewConstructor: any;
|
||||||
|
readerType: "default" | "byob";
|
||||||
|
}
|
||||||
|
|
||||||
interface ReadableByteStreamQueueEntry {
|
interface ReadableByteStreamQueueEntry {
|
||||||
buffer: ArrayBufferLike;
|
buffer: ArrayBufferLike;
|
||||||
byteOffset: number;
|
byteOffset: number;
|
||||||
|
|
29
ext/web/lib.deno_web.d.ts
vendored
29
ext/web/lib.deno_web.d.ts
vendored
|
@ -416,6 +416,33 @@ interface ReadableStreamDefaultReader<R = any> {
|
||||||
releaseLock(): void;
|
releaseLock(): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface ReadableStreamBYOBReadDoneResult {
|
||||||
|
done: true;
|
||||||
|
value?: ArrayBufferView;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ReadableStreamBYOBReadValueResult {
|
||||||
|
done: false;
|
||||||
|
value: ArrayBufferView;
|
||||||
|
}
|
||||||
|
|
||||||
|
type ReadableStreamBYOBReadResult =
|
||||||
|
| ReadableStreamBYOBReadDoneResult
|
||||||
|
| ReadableStreamBYOBReadValueResult;
|
||||||
|
|
||||||
|
interface ReadableStreamBYOBReader {
|
||||||
|
readonly closed: Promise<void>;
|
||||||
|
cancel(reason?: any): Promise<void>;
|
||||||
|
read(view: ArrayBufferView): Promise<ReadableStreamBYOBReadResult>;
|
||||||
|
releaseLock(): void;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ReadableStreamBYOBRequest {
|
||||||
|
readonly view: ArrayBufferView | null;
|
||||||
|
respond(bytesWritten: number): void;
|
||||||
|
respondWithNewView(view: ArrayBufferView): void;
|
||||||
|
}
|
||||||
|
|
||||||
declare var ReadableStreamDefaultReader: {
|
declare var ReadableStreamDefaultReader: {
|
||||||
prototype: ReadableStreamDefaultReader;
|
prototype: ReadableStreamDefaultReader;
|
||||||
new <R>(stream: ReadableStream<R>): ReadableStreamDefaultReader<R>;
|
new <R>(stream: ReadableStream<R>): ReadableStreamDefaultReader<R>;
|
||||||
|
@ -480,7 +507,7 @@ declare var ReadableStreamDefaultController: {
|
||||||
};
|
};
|
||||||
|
|
||||||
interface ReadableByteStreamController {
|
interface ReadableByteStreamController {
|
||||||
readonly byobRequest: undefined;
|
readonly byobRequest: ReadableStreamBYOBRequest | null;
|
||||||
readonly desiredSize: number | null;
|
readonly desiredSize: number | null;
|
||||||
close(): void;
|
close(): void;
|
||||||
enqueue(chunk: ArrayBufferView): void;
|
enqueue(chunk: ArrayBufferView): void;
|
||||||
|
|
|
@ -411,6 +411,12 @@ delete Object.prototype.__proto__;
|
||||||
ReadableByteStreamController: util.nonEnumerable(
|
ReadableByteStreamController: util.nonEnumerable(
|
||||||
streams.ReadableByteStreamController,
|
streams.ReadableByteStreamController,
|
||||||
),
|
),
|
||||||
|
ReadableStreamBYOBReader: util.nonEnumerable(
|
||||||
|
streams.ReadableStreamBYOBReader,
|
||||||
|
),
|
||||||
|
ReadableStreamBYOBRequest: util.nonEnumerable(
|
||||||
|
streams.ReadableStreamBYOBRequest,
|
||||||
|
),
|
||||||
ReadableStreamDefaultController: util.nonEnumerable(
|
ReadableStreamDefaultController: util.nonEnumerable(
|
||||||
streams.ReadableStreamDefaultController,
|
streams.ReadableStreamDefaultController,
|
||||||
),
|
),
|
||||||
|
|
|
@ -6109,82 +6109,12 @@
|
||||||
},
|
},
|
||||||
"streams": {
|
"streams": {
|
||||||
"idlharness.any.html": [
|
"idlharness.any.html": [
|
||||||
"ReadableStreamBYOBReader interface: existence and properties of interface object",
|
|
||||||
"ReadableStreamBYOBReader interface object length",
|
|
||||||
"ReadableStreamBYOBReader interface object name",
|
|
||||||
"ReadableStreamBYOBReader interface: existence and properties of interface prototype object",
|
|
||||||
"ReadableStreamBYOBReader interface: existence and properties of interface prototype object's \"constructor\" property",
|
|
||||||
"ReadableStreamBYOBReader interface: existence and properties of interface prototype object's @@unscopables property",
|
|
||||||
"ReadableStreamBYOBReader interface: operation read(ArrayBufferView)",
|
|
||||||
"ReadableStreamBYOBReader interface: operation releaseLock()",
|
|
||||||
"ReadableStreamBYOBReader interface: attribute closed",
|
|
||||||
"ReadableStreamBYOBReader interface: operation cancel(optional any)",
|
|
||||||
"ReadableStreamBYOBReader must be primary interface of (new ReadableStream({ type: 'bytes' })).getReader({ mode: 'byob' })",
|
|
||||||
"Stringification of (new ReadableStream({ type: 'bytes' })).getReader({ mode: 'byob' })",
|
|
||||||
"ReadableStreamBYOBReader interface: (new ReadableStream({ type: 'bytes' })).getReader({ mode: 'byob' }) must inherit property \"read(ArrayBufferView)\" with the proper type",
|
|
||||||
"ReadableStreamBYOBReader interface: calling read(ArrayBufferView) on (new ReadableStream({ type: 'bytes' })).getReader({ mode: 'byob' }) with too few arguments must throw TypeError",
|
|
||||||
"ReadableStreamBYOBReader interface: (new ReadableStream({ type: 'bytes' })).getReader({ mode: 'byob' }) must inherit property \"releaseLock()\" with the proper type",
|
|
||||||
"ReadableStreamBYOBReader interface: (new ReadableStream({ type: 'bytes' })).getReader({ mode: 'byob' }) must inherit property \"closed\" with the proper type",
|
|
||||||
"ReadableStreamBYOBReader interface: (new ReadableStream({ type: 'bytes' })).getReader({ mode: 'byob' }) must inherit property \"cancel(optional any)\" with the proper type",
|
|
||||||
"ReadableStreamBYOBReader interface: calling cancel(optional any) on (new ReadableStream({ type: 'bytes' })).getReader({ mode: 'byob' }) with too few arguments must throw TypeError",
|
|
||||||
"ReadableByteStreamController interface: self.readableByteStreamController must inherit property \"byobRequest\" with the proper type",
|
|
||||||
"ReadableStreamBYOBRequest interface: existence and properties of interface object",
|
|
||||||
"ReadableStreamBYOBRequest interface object length",
|
|
||||||
"ReadableStreamBYOBRequest interface object name",
|
|
||||||
"ReadableStreamBYOBRequest interface: existence and properties of interface prototype object",
|
|
||||||
"ReadableStreamBYOBRequest interface: existence and properties of interface prototype object's \"constructor\" property",
|
|
||||||
"ReadableStreamBYOBRequest interface: existence and properties of interface prototype object's @@unscopables property",
|
|
||||||
"ReadableStreamBYOBRequest interface: attribute view",
|
|
||||||
"ReadableStreamBYOBRequest interface: operation respond(unsigned long long)",
|
|
||||||
"ReadableStreamBYOBRequest interface: operation respondWithNewView(ArrayBufferView)",
|
|
||||||
"ReadableStreamBYOBRequest must be primary interface of self.readableStreamByobRequest",
|
|
||||||
"Stringification of self.readableStreamByobRequest",
|
|
||||||
"ReadableStreamBYOBRequest interface: self.readableStreamByobRequest must inherit property \"view\" with the proper type",
|
|
||||||
"ReadableStreamBYOBRequest interface: self.readableStreamByobRequest must inherit property \"respond(unsigned long long)\" with the proper type",
|
|
||||||
"ReadableStreamBYOBRequest interface: calling respond(unsigned long long) on self.readableStreamByobRequest with too few arguments must throw TypeError",
|
|
||||||
"ReadableStreamBYOBRequest interface: self.readableStreamByobRequest must inherit property \"respondWithNewView(ArrayBufferView)\" with the proper type",
|
|
||||||
"ReadableStreamBYOBRequest interface: calling respondWithNewView(ArrayBufferView) on self.readableStreamByobRequest with too few arguments must throw TypeError",
|
|
||||||
"WritableStreamDefaultController interface: attribute abortReason",
|
"WritableStreamDefaultController interface: attribute abortReason",
|
||||||
"WritableStreamDefaultController interface: attribute signal",
|
"WritableStreamDefaultController interface: attribute signal",
|
||||||
"WritableStreamDefaultController interface: self.writableStreamDefaultController must inherit property \"abortReason\" with the proper type",
|
"WritableStreamDefaultController interface: self.writableStreamDefaultController must inherit property \"abortReason\" with the proper type",
|
||||||
"WritableStreamDefaultController interface: self.writableStreamDefaultController must inherit property \"signal\" with the proper type"
|
"WritableStreamDefaultController interface: self.writableStreamDefaultController must inherit property \"signal\" with the proper type"
|
||||||
],
|
],
|
||||||
"idlharness.any.worker.html": [
|
"idlharness.any.worker.html": [
|
||||||
"ReadableStreamBYOBReader interface: existence and properties of interface object",
|
|
||||||
"ReadableStreamBYOBReader interface object length",
|
|
||||||
"ReadableStreamBYOBReader interface object name",
|
|
||||||
"ReadableStreamBYOBReader interface: existence and properties of interface prototype object",
|
|
||||||
"ReadableStreamBYOBReader interface: existence and properties of interface prototype object's \"constructor\" property",
|
|
||||||
"ReadableStreamBYOBReader interface: existence and properties of interface prototype object's @@unscopables property",
|
|
||||||
"ReadableStreamBYOBReader interface: operation read(ArrayBufferView)",
|
|
||||||
"ReadableStreamBYOBReader interface: operation releaseLock()",
|
|
||||||
"ReadableStreamBYOBReader interface: attribute closed",
|
|
||||||
"ReadableStreamBYOBReader interface: operation cancel(optional any)",
|
|
||||||
"ReadableStreamBYOBReader must be primary interface of (new ReadableStream({ type: 'bytes' })).getReader({ mode: 'byob' })",
|
|
||||||
"Stringification of (new ReadableStream({ type: 'bytes' })).getReader({ mode: 'byob' })",
|
|
||||||
"ReadableStreamBYOBReader interface: (new ReadableStream({ type: 'bytes' })).getReader({ mode: 'byob' }) must inherit property \"read(ArrayBufferView)\" with the proper type",
|
|
||||||
"ReadableStreamBYOBReader interface: calling read(ArrayBufferView) on (new ReadableStream({ type: 'bytes' })).getReader({ mode: 'byob' }) with too few arguments must throw TypeError",
|
|
||||||
"ReadableStreamBYOBReader interface: (new ReadableStream({ type: 'bytes' })).getReader({ mode: 'byob' }) must inherit property \"releaseLock()\" with the proper type",
|
|
||||||
"ReadableStreamBYOBReader interface: (new ReadableStream({ type: 'bytes' })).getReader({ mode: 'byob' }) must inherit property \"closed\" with the proper type",
|
|
||||||
"ReadableStreamBYOBReader interface: (new ReadableStream({ type: 'bytes' })).getReader({ mode: 'byob' }) must inherit property \"cancel(optional any)\" with the proper type",
|
|
||||||
"ReadableStreamBYOBReader interface: calling cancel(optional any) on (new ReadableStream({ type: 'bytes' })).getReader({ mode: 'byob' }) with too few arguments must throw TypeError",
|
|
||||||
"ReadableByteStreamController interface: self.readableByteStreamController must inherit property \"byobRequest\" with the proper type",
|
|
||||||
"ReadableStreamBYOBRequest interface: existence and properties of interface object",
|
|
||||||
"ReadableStreamBYOBRequest interface object length",
|
|
||||||
"ReadableStreamBYOBRequest interface object name",
|
|
||||||
"ReadableStreamBYOBRequest interface: existence and properties of interface prototype object",
|
|
||||||
"ReadableStreamBYOBRequest interface: existence and properties of interface prototype object's \"constructor\" property",
|
|
||||||
"ReadableStreamBYOBRequest interface: existence and properties of interface prototype object's @@unscopables property",
|
|
||||||
"ReadableStreamBYOBRequest interface: attribute view",
|
|
||||||
"ReadableStreamBYOBRequest interface: operation respond(unsigned long long)",
|
|
||||||
"ReadableStreamBYOBRequest interface: operation respondWithNewView(ArrayBufferView)",
|
|
||||||
"ReadableStreamBYOBRequest must be primary interface of self.readableStreamByobRequest",
|
|
||||||
"Stringification of self.readableStreamByobRequest",
|
|
||||||
"ReadableStreamBYOBRequest interface: self.readableStreamByobRequest must inherit property \"view\" with the proper type",
|
|
||||||
"ReadableStreamBYOBRequest interface: self.readableStreamByobRequest must inherit property \"respond(unsigned long long)\" with the proper type",
|
|
||||||
"ReadableStreamBYOBRequest interface: calling respond(unsigned long long) on self.readableStreamByobRequest with too few arguments must throw TypeError",
|
|
||||||
"ReadableStreamBYOBRequest interface: self.readableStreamByobRequest must inherit property \"respondWithNewView(ArrayBufferView)\" with the proper type",
|
|
||||||
"ReadableStreamBYOBRequest interface: calling respondWithNewView(ArrayBufferView) on self.readableStreamByobRequest with too few arguments must throw TypeError",
|
|
||||||
"WritableStreamDefaultController interface: attribute abortReason",
|
"WritableStreamDefaultController interface: attribute abortReason",
|
||||||
"WritableStreamDefaultController interface: attribute signal",
|
"WritableStreamDefaultController interface: attribute signal",
|
||||||
"WritableStreamDefaultController interface: self.writableStreamDefaultController must inherit property \"abortReason\" with the proper type",
|
"WritableStreamDefaultController interface: self.writableStreamDefaultController must inherit property \"abortReason\" with the proper type",
|
||||||
|
@ -6219,231 +6149,21 @@
|
||||||
"queuing-strategies.any.html": true,
|
"queuing-strategies.any.html": true,
|
||||||
"queuing-strategies.any.worker.html": true,
|
"queuing-strategies.any.worker.html": true,
|
||||||
"readable-byte-streams": {
|
"readable-byte-streams": {
|
||||||
"bad-buffers-and-views.any.html": [
|
"bad-buffers-and-views.any.html": true,
|
||||||
"ReadableStream with byte source: respond() throws if the BYOB request's buffer has been detached (in the readable state)",
|
"bad-buffers-and-views.any.worker.html": true,
|
||||||
"ReadableStream with byte source: respond() throws if the BYOB request's buffer has been detached (in the closed state)",
|
"construct-byob-request.any.html": true,
|
||||||
"ReadableStream with byte source: respondWithNewView() throws if the supplied view's buffer has been detached (in the readable state)",
|
"construct-byob-request.any.worker.html": true,
|
||||||
"ReadableStream with byte source: respondWithNewView() throws if the supplied view's buffer is zero-length (in the readable state)",
|
|
||||||
"ReadableStream with byte source: respondWithNewView() throws if the supplied view is zero-length on a non-zero-length buffer (in the readable state)",
|
|
||||||
"ReadableStream with byte source: respondWithNewView() throws if the supplied view's buffer has a different length (in the readable state)",
|
|
||||||
"ReadableStream with byte source: respondWithNewView() throws if the supplied view has a larger length (in the readable state)",
|
|
||||||
"ReadableStream with byte source: respondWithNewView() throws if the supplied view's buffer has been detached (in the closed state)",
|
|
||||||
"ReadableStream with byte source: respondWithNewView() throws if the supplied view's buffer is zero-length (in the closed state)",
|
|
||||||
"ReadableStream with byte source: respondWithNewView() throws if the supplied view is non-zero-length (in the closed state)",
|
|
||||||
"ReadableStream with byte source: respondWithNewView() throws if the supplied view's buffer has a different length (in the closed state)",
|
|
||||||
"ReadableStream with byte source: enqueue() throws if the BYOB request's buffer has been detached (in the readable state)",
|
|
||||||
"ReadableStream with byte source: enqueue() throws if the BYOB request's buffer has been detached (in the closed state)",
|
|
||||||
"ReadableStream with byte source: read()ing from a closed stream still transfers the buffer",
|
|
||||||
"ReadableStream with byte source: read()ing from a stream with queued chunks still transfers the buffer",
|
|
||||||
"ReadableStream with byte source: reading into an already-detached buffer rejects",
|
|
||||||
"ReadableStream with byte source: reading into a zero-length buffer rejects",
|
|
||||||
"ReadableStream with byte source: reading into a zero-length view on a non-zero-length buffer rejects"
|
|
||||||
],
|
|
||||||
"bad-buffers-and-views.any.worker.html": [
|
|
||||||
"ReadableStream with byte source: respond() throws if the BYOB request's buffer has been detached (in the readable state)",
|
|
||||||
"ReadableStream with byte source: respond() throws if the BYOB request's buffer has been detached (in the closed state)",
|
|
||||||
"ReadableStream with byte source: respondWithNewView() throws if the supplied view's buffer has been detached (in the readable state)",
|
|
||||||
"ReadableStream with byte source: respondWithNewView() throws if the supplied view's buffer is zero-length (in the readable state)",
|
|
||||||
"ReadableStream with byte source: respondWithNewView() throws if the supplied view is zero-length on a non-zero-length buffer (in the readable state)",
|
|
||||||
"ReadableStream with byte source: respondWithNewView() throws if the supplied view's buffer has a different length (in the readable state)",
|
|
||||||
"ReadableStream with byte source: respondWithNewView() throws if the supplied view has a larger length (in the readable state)",
|
|
||||||
"ReadableStream with byte source: respondWithNewView() throws if the supplied view's buffer has been detached (in the closed state)",
|
|
||||||
"ReadableStream with byte source: respondWithNewView() throws if the supplied view's buffer is zero-length (in the closed state)",
|
|
||||||
"ReadableStream with byte source: respondWithNewView() throws if the supplied view is non-zero-length (in the closed state)",
|
|
||||||
"ReadableStream with byte source: respondWithNewView() throws if the supplied view's buffer has a different length (in the closed state)",
|
|
||||||
"ReadableStream with byte source: enqueue() throws if the BYOB request's buffer has been detached (in the readable state)",
|
|
||||||
"ReadableStream with byte source: enqueue() throws if the BYOB request's buffer has been detached (in the closed state)",
|
|
||||||
"ReadableStream with byte source: read()ing from a closed stream still transfers the buffer",
|
|
||||||
"ReadableStream with byte source: read()ing from a stream with queued chunks still transfers the buffer",
|
|
||||||
"ReadableStream with byte source: reading into an already-detached buffer rejects",
|
|
||||||
"ReadableStream with byte source: reading into a zero-length buffer rejects",
|
|
||||||
"ReadableStream with byte source: reading into a zero-length view on a non-zero-length buffer rejects"
|
|
||||||
],
|
|
||||||
"construct-byob-request.any.html": false,
|
|
||||||
"construct-byob-request.any.worker.html": false,
|
|
||||||
"general.any.html": [
|
"general.any.html": [
|
||||||
"getReader({mode: \"byob\"}) throws on non-bytes streams",
|
"ReadableStream with byte source: Respond to multiple pull() by separate enqueue()"
|
||||||
"ReadableStream with byte source can be constructed with no errors",
|
|
||||||
"getReader({mode}) must perform ToString()",
|
|
||||||
"ReadableStream with byte source: autoAllocateChunkSize cannot be 0",
|
|
||||||
"ReadableStreamBYOBReader can be constructed directly",
|
|
||||||
"ReadableStreamBYOBReader constructor requires a ReadableStream argument",
|
|
||||||
"ReadableStreamBYOBReader constructor requires an unlocked ReadableStream",
|
|
||||||
"ReadableStreamBYOBReader constructor requires a ReadableStream with type \"bytes\"",
|
|
||||||
"ReadableStream with byte source: getReader() with mode set to byob, then releaseLock()",
|
|
||||||
"ReadableStream with byte source: Test that closing a stream does not release a BYOB reader automatically",
|
|
||||||
"ReadableStream with byte source: Test that erroring a stream does not release a BYOB reader automatically",
|
|
||||||
"ReadableStream with byte source: autoAllocateChunkSize",
|
|
||||||
"ReadableStream with byte source: Mix of auto allocate and BYOB",
|
|
||||||
"ReadableStream with byte source: enqueue(), read(view) partially, then read()",
|
|
||||||
"ReadableStream with byte source: Respond to pull() by enqueue()",
|
|
||||||
"ReadableStream with byte source: Respond to pull() by enqueue() asynchronously",
|
|
||||||
"ReadableStream with byte source: Respond to multiple pull() by separate enqueue()",
|
|
||||||
"ReadableStream with byte source: read(view), then respond()",
|
|
||||||
"ReadableStream with byte source: read(view), then respondWithNewView() with a transferred ArrayBuffer",
|
|
||||||
"ReadableStream with byte source: read(view), then respond() with too big value",
|
|
||||||
"ReadableStream with byte source: respond(3) to read(view) with 2 element Uint16Array enqueues the 1 byte remainder",
|
|
||||||
"ReadableStream with byte source: enqueue(), getReader(), then read(view)",
|
|
||||||
"ReadableStream with byte source: enqueue(), getReader(), then cancel() (mode = BYOB)",
|
|
||||||
"ReadableStream with byte source: getReader(), read(view), then cancel()",
|
|
||||||
"ReadableStream with byte source: cancel() with partially filled pending pull() request",
|
|
||||||
"ReadableStream with byte source: enqueue(), getReader(), then read(view) where view.buffer is not fully covered by view",
|
|
||||||
"ReadableStream with byte source: Multiple enqueue(), getReader(), then read(view)",
|
|
||||||
"ReadableStream with byte source: enqueue(), getReader(), then read(view) with a bigger view",
|
|
||||||
"ReadableStream with byte source: enqueue(), getReader(), then read(view) with smaller views",
|
|
||||||
"ReadableStream with byte source: enqueue() 1 byte, getReader(), then read(view) with Uint16Array",
|
|
||||||
"ReadableStream with byte source: enqueue() 3 byte, getReader(), then read(view) with 2-element Uint16Array",
|
|
||||||
"ReadableStream with byte source: read(view) with Uint16Array on close()-d stream with 1 byte enqueue()-d must fail",
|
|
||||||
"ReadableStream with byte source: A stream must be errored if close()-d before fulfilling read(view) with Uint16Array",
|
|
||||||
"ReadableStream with byte source: read(view), then respond() and close() in pull()",
|
|
||||||
"ReadableStream with byte source: read(view) with Uint32Array, then fill it by multiple respond() calls",
|
|
||||||
"ReadableStream with byte source: read(view) with Uint32Array, then fill it by multiple enqueue() calls",
|
|
||||||
"ReadableStream with byte source: read() twice, then enqueue() twice",
|
|
||||||
"ReadableStream with byte source: Multiple read(view), close() and respond()",
|
|
||||||
"ReadableStream with byte source: Multiple read(view), big enqueue()",
|
|
||||||
"ReadableStream with byte source: Multiple read(view) and multiple enqueue()",
|
|
||||||
"ReadableStream with byte source: read(view) with passing undefined as view must fail",
|
|
||||||
"ReadableStream with byte source: read(view) with passing an empty object as view must fail",
|
|
||||||
"ReadableStream with byte source: Even read(view) with passing ArrayBufferView like object as view must fail",
|
|
||||||
"ReadableStream with byte source: read(view) on an errored stream",
|
|
||||||
"ReadableStream with byte source: read(view), then error()",
|
|
||||||
"ReadableStream with byte source: Throwing in pull function must error the stream",
|
|
||||||
"ReadableStream with byte source: Throwing in pull in response to read() must be ignored if the stream is errored in it",
|
|
||||||
"ReadableStream with byte source: Throwing in pull in response to read(view) function must error the stream",
|
|
||||||
"ReadableStream with byte source: Throwing in pull in response to read(view) must be ignored if the stream is errored in it",
|
|
||||||
"calling respond() twice on the same byobRequest should throw",
|
|
||||||
"calling respondWithNewView() twice on the same byobRequest should throw",
|
|
||||||
"calling respond(0) twice on the same byobRequest should throw even when closed",
|
|
||||||
"calling respond() should throw when canceled",
|
|
||||||
"pull() resolving should not make releaseLock() possible",
|
|
||||||
"ReadableStream with byte source: default reader + autoAllocateChunkSize + byobRequest interaction",
|
|
||||||
"ReadableStream with byte source: respondWithNewView() with a smaller view",
|
|
||||||
"ReadableStream with byte source: respondWithNewView() with a zero-length view (in the closed state)",
|
|
||||||
"ReadableStream with byte source: respondWithNewView() with a transferred non-zero-length view (in the readable state)",
|
|
||||||
"ReadableStream with byte source: respondWithNewView() with a transferred zero-length view (in the closed state)"
|
|
||||||
],
|
],
|
||||||
"general.any.worker.html": [
|
"general.any.worker.html": [
|
||||||
"getReader({mode: \"byob\"}) throws on non-bytes streams",
|
"ReadableStream with byte source: Respond to multiple pull() by separate enqueue()"
|
||||||
"ReadableStream with byte source can be constructed with no errors",
|
|
||||||
"getReader({mode}) must perform ToString()",
|
|
||||||
"ReadableStream with byte source: autoAllocateChunkSize cannot be 0",
|
|
||||||
"ReadableStreamBYOBReader can be constructed directly",
|
|
||||||
"ReadableStreamBYOBReader constructor requires a ReadableStream argument",
|
|
||||||
"ReadableStreamBYOBReader constructor requires an unlocked ReadableStream",
|
|
||||||
"ReadableStreamBYOBReader constructor requires a ReadableStream with type \"bytes\"",
|
|
||||||
"ReadableStream with byte source: getReader() with mode set to byob, then releaseLock()",
|
|
||||||
"ReadableStream with byte source: Test that closing a stream does not release a BYOB reader automatically",
|
|
||||||
"ReadableStream with byte source: Test that erroring a stream does not release a BYOB reader automatically",
|
|
||||||
"ReadableStream with byte source: autoAllocateChunkSize",
|
|
||||||
"ReadableStream with byte source: Mix of auto allocate and BYOB",
|
|
||||||
"ReadableStream with byte source: enqueue(), read(view) partially, then read()",
|
|
||||||
"ReadableStream with byte source: Respond to pull() by enqueue()",
|
|
||||||
"ReadableStream with byte source: Respond to pull() by enqueue() asynchronously",
|
|
||||||
"ReadableStream with byte source: Respond to multiple pull() by separate enqueue()",
|
|
||||||
"ReadableStream with byte source: read(view), then respond()",
|
|
||||||
"ReadableStream with byte source: read(view), then respondWithNewView() with a transferred ArrayBuffer",
|
|
||||||
"ReadableStream with byte source: read(view), then respond() with too big value",
|
|
||||||
"ReadableStream with byte source: respond(3) to read(view) with 2 element Uint16Array enqueues the 1 byte remainder",
|
|
||||||
"ReadableStream with byte source: enqueue(), getReader(), then read(view)",
|
|
||||||
"ReadableStream with byte source: enqueue(), getReader(), then cancel() (mode = BYOB)",
|
|
||||||
"ReadableStream with byte source: getReader(), read(view), then cancel()",
|
|
||||||
"ReadableStream with byte source: cancel() with partially filled pending pull() request",
|
|
||||||
"ReadableStream with byte source: enqueue(), getReader(), then read(view) where view.buffer is not fully covered by view",
|
|
||||||
"ReadableStream with byte source: Multiple enqueue(), getReader(), then read(view)",
|
|
||||||
"ReadableStream with byte source: enqueue(), getReader(), then read(view) with a bigger view",
|
|
||||||
"ReadableStream with byte source: enqueue(), getReader(), then read(view) with smaller views",
|
|
||||||
"ReadableStream with byte source: enqueue() 1 byte, getReader(), then read(view) with Uint16Array",
|
|
||||||
"ReadableStream with byte source: enqueue() 3 byte, getReader(), then read(view) with 2-element Uint16Array",
|
|
||||||
"ReadableStream with byte source: read(view) with Uint16Array on close()-d stream with 1 byte enqueue()-d must fail",
|
|
||||||
"ReadableStream with byte source: A stream must be errored if close()-d before fulfilling read(view) with Uint16Array",
|
|
||||||
"ReadableStream with byte source: read(view), then respond() and close() in pull()",
|
|
||||||
"ReadableStream with byte source: read(view) with Uint32Array, then fill it by multiple respond() calls",
|
|
||||||
"ReadableStream with byte source: read(view) with Uint32Array, then fill it by multiple enqueue() calls",
|
|
||||||
"ReadableStream with byte source: read() twice, then enqueue() twice",
|
|
||||||
"ReadableStream with byte source: Multiple read(view), close() and respond()",
|
|
||||||
"ReadableStream with byte source: Multiple read(view), big enqueue()",
|
|
||||||
"ReadableStream with byte source: Multiple read(view) and multiple enqueue()",
|
|
||||||
"ReadableStream with byte source: read(view) with passing undefined as view must fail",
|
|
||||||
"ReadableStream with byte source: read(view) with passing an empty object as view must fail",
|
|
||||||
"ReadableStream with byte source: Even read(view) with passing ArrayBufferView like object as view must fail",
|
|
||||||
"ReadableStream with byte source: read(view) on an errored stream",
|
|
||||||
"ReadableStream with byte source: read(view), then error()",
|
|
||||||
"ReadableStream with byte source: Throwing in pull function must error the stream",
|
|
||||||
"ReadableStream with byte source: Throwing in pull in response to read() must be ignored if the stream is errored in it",
|
|
||||||
"ReadableStream with byte source: Throwing in pull in response to read(view) function must error the stream",
|
|
||||||
"ReadableStream with byte source: Throwing in pull in response to read(view) must be ignored if the stream is errored in it",
|
|
||||||
"calling respond() twice on the same byobRequest should throw",
|
|
||||||
"calling respondWithNewView() twice on the same byobRequest should throw",
|
|
||||||
"calling respond(0) twice on the same byobRequest should throw even when closed",
|
|
||||||
"calling respond() should throw when canceled",
|
|
||||||
"pull() resolving should not make releaseLock() possible",
|
|
||||||
"ReadableStream with byte source: default reader + autoAllocateChunkSize + byobRequest interaction",
|
|
||||||
"ReadableStream with byte source: respondWithNewView() with a smaller view",
|
|
||||||
"ReadableStream with byte source: respondWithNewView() with a zero-length view (in the closed state)",
|
|
||||||
"ReadableStream with byte source: respondWithNewView() with a transferred non-zero-length view (in the readable state)",
|
|
||||||
"ReadableStream with byte source: respondWithNewView() with a transferred zero-length view (in the closed state)"
|
|
||||||
],
|
],
|
||||||
"non-transferable-buffers.any.html": false,
|
"non-transferable-buffers.any.html": false,
|
||||||
"non-transferable-buffers.any.worker.html": false,
|
"non-transferable-buffers.any.worker.html": false,
|
||||||
"enqueue-with-detached-buffer.window.html": false,
|
"enqueue-with-detached-buffer.window.html": false,
|
||||||
"tee.any.html": [
|
"tee.any.html": true,
|
||||||
"ReadableStream teeing with byte source: should be able to read one branch to the end without affecting the other",
|
"tee.any.worker.html": true
|
||||||
"ReadableStream teeing with byte source: chunks should be cloned for each branch",
|
|
||||||
"ReadableStream teeing with byte source: chunks for BYOB requests from branch 1 should be cloned to branch 2",
|
|
||||||
"ReadableStream teeing with byte source: errors in the source should propagate to both branches",
|
|
||||||
"ReadableStream teeing with byte source: closing the original should close the branches",
|
|
||||||
"ReadableStream teeing with byte source: erroring the original should immediately error the branches",
|
|
||||||
"ReadableStream teeing with byte source: erroring the original should error pending reads from BYOB reader",
|
|
||||||
"ReadableStream teeing with byte source: canceling branch1 should finish when branch2 reads until end of stream",
|
|
||||||
"ReadableStream teeing with byte source: canceling branch1 should finish when original stream errors",
|
|
||||||
"ReadableStream teeing with byte source: should not pull any chunks if no branches are reading",
|
|
||||||
"ReadableStream teeing with byte source: should only pull enough to fill the emptiest queue",
|
|
||||||
"ReadableStream teeing with byte source: should not pull when original is already errored",
|
|
||||||
"ReadableStream teeing with byte source: stops pulling when original stream errors while branch 1 is reading",
|
|
||||||
"ReadableStream teeing with byte source: stops pulling when original stream errors while branch 2 is reading",
|
|
||||||
"ReadableStream teeing with byte source: stops pulling when original stream errors while both branches are reading",
|
|
||||||
"ReadableStream teeing with byte source: canceling both branches in sequence with delay",
|
|
||||||
"ReadableStream teeing with byte source: failing to cancel when canceling both branches in sequence with delay",
|
|
||||||
"ReadableStream teeing with byte source: read from branch1 and branch2, cancel branch1, cancel branch2",
|
|
||||||
"ReadableStream teeing with byte source: read from branch1 and branch2, cancel branch2, cancel branch1",
|
|
||||||
"ReadableStream teeing with byte source: read from branch1 and branch2, cancel branch2, enqueue to branch1",
|
|
||||||
"ReadableStream teeing with byte source: read from branch1 and branch2, cancel branch1, respond to branch2",
|
|
||||||
"ReadableStream teeing with byte source: pull with BYOB reader, then pull with default reader",
|
|
||||||
"ReadableStream teeing with byte source: pull with default reader, then pull with BYOB reader",
|
|
||||||
"ReadableStream teeing with byte source: read from branch2, then read from branch1",
|
|
||||||
"ReadableStream teeing with byte source: read from branch1 with default reader, then close while branch2 has pending BYOB read",
|
|
||||||
"ReadableStream teeing with byte source: read from branch2 with default reader, then close while branch1 has pending BYOB read",
|
|
||||||
"ReadableStream teeing with byte source: close when both branches have pending BYOB reads"
|
|
||||||
],
|
|
||||||
"tee.any.worker.html": [
|
|
||||||
"ReadableStream teeing with byte source: should be able to read one branch to the end without affecting the other",
|
|
||||||
"ReadableStream teeing with byte source: chunks should be cloned for each branch",
|
|
||||||
"ReadableStream teeing with byte source: chunks for BYOB requests from branch 1 should be cloned to branch 2",
|
|
||||||
"ReadableStream teeing with byte source: errors in the source should propagate to both branches",
|
|
||||||
"ReadableStream teeing with byte source: closing the original should close the branches",
|
|
||||||
"ReadableStream teeing with byte source: erroring the original should immediately error the branches",
|
|
||||||
"ReadableStream teeing with byte source: erroring the original should error pending reads from BYOB reader",
|
|
||||||
"ReadableStream teeing with byte source: canceling branch1 should finish when branch2 reads until end of stream",
|
|
||||||
"ReadableStream teeing with byte source: canceling branch1 should finish when original stream errors",
|
|
||||||
"ReadableStream teeing with byte source: should not pull any chunks if no branches are reading",
|
|
||||||
"ReadableStream teeing with byte source: should only pull enough to fill the emptiest queue",
|
|
||||||
"ReadableStream teeing with byte source: should not pull when original is already errored",
|
|
||||||
"ReadableStream teeing with byte source: stops pulling when original stream errors while branch 1 is reading",
|
|
||||||
"ReadableStream teeing with byte source: stops pulling when original stream errors while branch 2 is reading",
|
|
||||||
"ReadableStream teeing with byte source: stops pulling when original stream errors while both branches are reading",
|
|
||||||
"ReadableStream teeing with byte source: canceling both branches in sequence with delay",
|
|
||||||
"ReadableStream teeing with byte source: failing to cancel when canceling both branches in sequence with delay",
|
|
||||||
"ReadableStream teeing with byte source: read from branch1 and branch2, cancel branch1, cancel branch2",
|
|
||||||
"ReadableStream teeing with byte source: read from branch1 and branch2, cancel branch2, cancel branch1",
|
|
||||||
"ReadableStream teeing with byte source: read from branch1 and branch2, cancel branch2, enqueue to branch1",
|
|
||||||
"ReadableStream teeing with byte source: read from branch1 and branch2, cancel branch1, respond to branch2",
|
|
||||||
"ReadableStream teeing with byte source: pull with BYOB reader, then pull with default reader",
|
|
||||||
"ReadableStream teeing with byte source: pull with default reader, then pull with BYOB reader",
|
|
||||||
"ReadableStream teeing with byte source: read from branch2, then read from branch1",
|
|
||||||
"ReadableStream teeing with byte source: read from branch1 with default reader, then close while branch2 has pending BYOB read",
|
|
||||||
"ReadableStream teeing with byte source: read from branch2 with default reader, then close while branch1 has pending BYOB read",
|
|
||||||
"ReadableStream teeing with byte source: close when both branches have pending BYOB reads"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"readable-streams": {
|
"readable-streams": {
|
||||||
"async-iterator.any.html": false,
|
"async-iterator.any.html": false,
|
||||||
|
|
Loading…
Reference in a new issue