From c279d514e9eb8a843adc6cbeb50f7261b54c73d6 Mon Sep 17 00:00:00 2001 From: Shannon Booth Date: Sun, 27 Aug 2023 12:55:25 +1200 Subject: [PATCH] LibWeb: Implement ReadableStreamBYOBReader constructor --- .../LibWeb/Streams/ReadableStreamBYOBReader.cpp | 14 ++++++++++++++ .../LibWeb/Streams/ReadableStreamBYOBReader.h | 2 ++ .../LibWeb/Streams/ReadableStreamBYOBReader.idl | 6 ++++-- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/Userland/Libraries/LibWeb/Streams/ReadableStreamBYOBReader.cpp b/Userland/Libraries/LibWeb/Streams/ReadableStreamBYOBReader.cpp index f3466d1706..7c9e5d6cf4 100644 --- a/Userland/Libraries/LibWeb/Streams/ReadableStreamBYOBReader.cpp +++ b/Userland/Libraries/LibWeb/Streams/ReadableStreamBYOBReader.cpp @@ -1,12 +1,15 @@ /* * Copyright (c) 2023, Matthew Olsson + * Copyright (c) 2023, Shannon Booth * * SPDX-License-Identifier: BSD-2-Clause */ #include +#include #include #include +#include namespace Web::Streams { @@ -16,6 +19,17 @@ ReadableStreamBYOBReader::ReadableStreamBYOBReader(JS::Realm& realm) { } +// https://streams.spec.whatwg.org/#byob-reader-constructor +WebIDL::ExceptionOr> ReadableStreamBYOBReader::construct_impl(JS::Realm& realm, JS::NonnullGCPtr stream) +{ + auto reader = realm.heap().allocate(realm, realm); + + // 1. Perform ? SetUpReadableStreamBYOBReader(this, stream). + TRY(set_up_readable_stream_byob_reader(reader, *stream)); + + return reader; +} + void ReadableStreamBYOBReader::visit_edges(Cell::Visitor& visitor) { Base::visit_edges(visitor); diff --git a/Userland/Libraries/LibWeb/Streams/ReadableStreamBYOBReader.h b/Userland/Libraries/LibWeb/Streams/ReadableStreamBYOBReader.h index 0af65b212d..ad6597de34 100644 --- a/Userland/Libraries/LibWeb/Streams/ReadableStreamBYOBReader.h +++ b/Userland/Libraries/LibWeb/Streams/ReadableStreamBYOBReader.h @@ -37,6 +37,8 @@ class ReadableStreamBYOBReader final WEB_PLATFORM_OBJECT(ReadableStreamBYOBReader, Bindings::PlatformObject); public: + static WebIDL::ExceptionOr> construct_impl(JS::Realm&, JS::NonnullGCPtr); + virtual ~ReadableStreamBYOBReader() override = default; Vector>& read_into_requests() { return m_read_into_requests; } diff --git a/Userland/Libraries/LibWeb/Streams/ReadableStreamBYOBReader.idl b/Userland/Libraries/LibWeb/Streams/ReadableStreamBYOBReader.idl index 27a704c219..96a6d4e121 100644 --- a/Userland/Libraries/LibWeb/Streams/ReadableStreamBYOBReader.idl +++ b/Userland/Libraries/LibWeb/Streams/ReadableStreamBYOBReader.idl @@ -1,10 +1,12 @@ +#import #import +// https://streams.spec.whatwg.org/#readablestreambyobreader [Exposed=*] interface ReadableStreamBYOBReader { - // FIXME: Implement - // constructor(ReadableStream stream); + constructor(ReadableStream stream); + // FIXME: Implement // Promise read(ArrayBufferView view); // undefined releaseLock(); };