diff --git a/Userland/Libraries/LibWeb/Streams/ReadableStreamDefaultReader.cpp b/Userland/Libraries/LibWeb/Streams/ReadableStreamDefaultReader.cpp index fc47b2cb30..f6592bdbf7 100644 --- a/Userland/Libraries/LibWeb/Streams/ReadableStreamDefaultReader.cpp +++ b/Userland/Libraries/LibWeb/Streams/ReadableStreamDefaultReader.cpp @@ -169,6 +169,22 @@ WebIDL::ExceptionOr> ReadableStreamDefaultReader:: return JS::NonnullGCPtr { verify_cast(*promise_capability->promise()) }; } +// https://streams.spec.whatwg.org/#readablestreamdefaultreader-read-all-bytes +WebIDL::ExceptionOr ReadableStreamDefaultReader::read_all_bytes(ReadLoopReadRequest::SuccessSteps success_steps, ReadLoopReadRequest::FailureSteps failure_steps) +{ + auto& realm = this->realm(); + auto& vm = realm.vm(); + + // 1. Let readRequest be a new read request with the following items: + // NOTE: items and steps in ReadLoopReadRequest. + auto read_request = adopt_ref(*new ReadLoopReadRequest(vm, realm, *this, move(success_steps), move(failure_steps))); + + // 2. Perform ! ReadableStreamDefaultReaderRead(this, readRequest). + TRY(readable_stream_default_reader_read(*this, read_request)); + + return {}; +} + // https://streams.spec.whatwg.org/#default-reader-release-lock WebIDL::ExceptionOr ReadableStreamDefaultReader::release_lock() { diff --git a/Userland/Libraries/LibWeb/Streams/ReadableStreamDefaultReader.h b/Userland/Libraries/LibWeb/Streams/ReadableStreamDefaultReader.h index 3edb5ede61..c5a32b7baf 100644 --- a/Userland/Libraries/LibWeb/Streams/ReadableStreamDefaultReader.h +++ b/Userland/Libraries/LibWeb/Streams/ReadableStreamDefaultReader.h @@ -66,6 +66,8 @@ public: virtual ~ReadableStreamDefaultReader() override = default; WebIDL::ExceptionOr> read(); + + WebIDL::ExceptionOr read_all_bytes(ReadLoopReadRequest::SuccessSteps, ReadLoopReadRequest::FailureSteps); WebIDL::ExceptionOr release_lock(); SinglyLinkedList>& read_requests() { return m_read_requests; }