diff --git a/Userland/Libraries/LibWeb/Streams/AbstractOperations.cpp b/Userland/Libraries/LibWeb/Streams/AbstractOperations.cpp index 7fcefbd463..6d44514027 100644 --- a/Userland/Libraries/LibWeb/Streams/AbstractOperations.cpp +++ b/Userland/Libraries/LibWeb/Streams/AbstractOperations.cpp @@ -46,6 +46,21 @@ WebIDL::ExceptionOr> acquire_reada return reader; } +// https://streams.spec.whatwg.org/#acquire-readable-stream-byob-reader +WebIDL::ExceptionOr> acquire_readable_stream_byob_reader(ReadableStream& stream) +{ + auto& realm = stream.realm(); + + // 1. Let reader be a new ReadableStreamBYOBReader. + auto reader = TRY(realm.heap().allocate(realm, realm)); + + // 2. Perform ? SetUpReadableStreamBYOBReader(reader, stream). + TRY(set_up_readable_stream_byob_reader(reader, stream)); + + // 3. Return reader. + return reader; +} + // https://streams.spec.whatwg.org/#is-readable-stream-locked bool is_readable_stream_locked(ReadableStream const& stream) { diff --git a/Userland/Libraries/LibWeb/Streams/AbstractOperations.h b/Userland/Libraries/LibWeb/Streams/AbstractOperations.h index c6c5824ce6..79ecb5eb40 100644 --- a/Userland/Libraries/LibWeb/Streams/AbstractOperations.h +++ b/Userland/Libraries/LibWeb/Streams/AbstractOperations.h @@ -26,6 +26,7 @@ using CloseAlgorithm = JS::SafeFunction>(JS::Value)>; WebIDL::ExceptionOr> acquire_readable_stream_default_reader(ReadableStream&); +WebIDL::ExceptionOr> acquire_readable_stream_byob_reader(ReadableStream&); bool is_readable_stream_locked(ReadableStream const&); SizeAlgorithm extract_size_algorithm(QueuingStrategy const&);