diff --git a/Userland/Libraries/LibWeb/Streams/AbstractOperations.cpp b/Userland/Libraries/LibWeb/Streams/AbstractOperations.cpp index 470d25d165..c270f56b08 100644 --- a/Userland/Libraries/LibWeb/Streams/AbstractOperations.cpp +++ b/Userland/Libraries/LibWeb/Streams/AbstractOperations.cpp @@ -358,6 +358,19 @@ void readable_stream_add_read_request(ReadableStream& stream, JS::NonnullGCPtrget>()->read_requests().append(read_request); } +// https://streams.spec.whatwg.org/#readable-stream-add-read-into-request +void readable_stream_add_read_into_request(ReadableStream& stream, JS::NonnullGCPtr read_into_request) +{ + // 1. Assert: stream.[[reader]] implements ReadableStreamBYOBReader. + VERIFY(stream.reader().has_value() && stream.reader()->has>()); + + // 2. Assert: stream.[[state]] is "readable" or "closed". + VERIFY(stream.is_readable() || stream.is_closed()); + + // 3. Append readRequest to stream.[[reader]].[[readIntoRequests]]. + stream.reader()->get>()->read_into_requests().append(read_into_request); +} + // https://streams.spec.whatwg.org/#readable-stream-reader-generic-cancel WebIDL::ExceptionOr> readable_stream_reader_generic_cancel(ReadableStreamGenericReaderMixin& reader, JS::Value reason) { diff --git a/Userland/Libraries/LibWeb/Streams/AbstractOperations.h b/Userland/Libraries/LibWeb/Streams/AbstractOperations.h index 3485003be8..e61e35e0d9 100644 --- a/Userland/Libraries/LibWeb/Streams/AbstractOperations.h +++ b/Userland/Libraries/LibWeb/Streams/AbstractOperations.h @@ -38,6 +38,7 @@ WebIDL::ExceptionOr extract_high_water_mark(QueuingStrategy const&, doub void readable_stream_close(ReadableStream&); void readable_stream_error(ReadableStream&, JS::Value error); void readable_stream_add_read_request(ReadableStream&, JS::NonnullGCPtr); +void readable_stream_add_read_into_request(ReadableStream&, JS::NonnullGCPtr); WebIDL::ExceptionOr> readable_stream_cancel(ReadableStream&, JS::Value reason); void readable_stream_fulfill_read_into_request(ReadableStream&, JS::Value chunk, bool done); void readable_stream_fulfill_read_request(ReadableStream&, JS::Value chunk, bool done);