From 8ce4f5597c26b928d0ea1ec5c27e42fc5c35a710 Mon Sep 17 00:00:00 2001 From: Shannon Booth Date: Sun, 27 Aug 2023 13:28:08 +1200 Subject: [PATCH] LibWeb: Implement ReadableStreamBYOBReaderErrorReadIntoRequests AO --- .../LibWeb/Streams/AbstractOperations.cpp | 17 +++++++++++++++++ .../LibWeb/Streams/AbstractOperations.h | 2 ++ 2 files changed, 19 insertions(+) diff --git a/Userland/Libraries/LibWeb/Streams/AbstractOperations.cpp b/Userland/Libraries/LibWeb/Streams/AbstractOperations.cpp index 847ded5a37..31aa3eaefb 100644 --- a/Userland/Libraries/LibWeb/Streams/AbstractOperations.cpp +++ b/Userland/Libraries/LibWeb/Streams/AbstractOperations.cpp @@ -437,6 +437,23 @@ void readable_stream_default_reader_error_read_requests(ReadableStreamDefaultRea } } +// https://streams.spec.whatwg.org/#abstract-opdef-readablestreambyobreadererrorreadintorequests +void readable_stream_byob_reader_error_read_into_requests(ReadableStreamBYOBReader& reader, JS::Value error) +{ + // 1. Let readIntoRequests be reader.[[readIntoRequests]]. + auto read_into_requests = move(reader.read_into_requests()); + + // 2. Set reader.[[readIntoRequests]] to a new empty list. + reader.read_into_requests().clear(); + + // 3. For each readIntoRequest of readIntoRequests, + for (auto& read_into_request : read_into_requests) { + + // 1. Perform readIntoRequest’s error steps, given e. + read_into_request->on_error(error); + } +} + // https://streams.spec.whatwg.org/#readable-stream-default-reader-read WebIDL::ExceptionOr readable_stream_default_reader_read(ReadableStreamDefaultReader& reader, ReadRequest& read_request) { diff --git a/Userland/Libraries/LibWeb/Streams/AbstractOperations.h b/Userland/Libraries/LibWeb/Streams/AbstractOperations.h index cbe416789c..9404ba445c 100644 --- a/Userland/Libraries/LibWeb/Streams/AbstractOperations.h +++ b/Userland/Libraries/LibWeb/Streams/AbstractOperations.h @@ -50,6 +50,8 @@ void readable_stream_reader_generic_initialize(ReadableStreamReader, ReadableStr WebIDL::ExceptionOr readable_stream_reader_generic_release(ReadableStreamGenericReaderMixin&); void readable_stream_default_reader_error_read_requests(ReadableStreamDefaultReader&, JS::Value error); +void readable_stream_byob_reader_error_read_into_requests(ReadableStreamBYOBReader&, JS::Value error); + WebIDL::ExceptionOr readable_stream_default_reader_read(ReadableStreamDefaultReader&, ReadRequest&); WebIDL::ExceptionOr readable_stream_default_reader_release(ReadableStreamDefaultReader&); WebIDL::ExceptionOr set_up_readable_stream_default_reader(ReadableStreamDefaultReader&, ReadableStream&);