From 5f2b75852f1d0f07935d2fb5c275832b8c949f06 Mon Sep 17 00:00:00 2001 From: Shannon Booth Date: Tue, 24 Dec 2024 12:56:59 +1300 Subject: [PATCH] LibWeb: Add an 'enqueue' helper method on TransformStream --- Libraries/LibWeb/Compression/DecompressionStream.cpp | 4 ++-- Libraries/LibWeb/Streams/TransformStream.cpp | 7 +++++++ Libraries/LibWeb/Streams/TransformStream.h | 1 + 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Libraries/LibWeb/Compression/DecompressionStream.cpp b/Libraries/LibWeb/Compression/DecompressionStream.cpp index 99bae93b155..1a114527559 100644 --- a/Libraries/LibWeb/Compression/DecompressionStream.cpp +++ b/Libraries/LibWeb/Compression/DecompressionStream.cpp @@ -133,7 +133,7 @@ WebIDL::ExceptionOr DecompressionStream::decompress_and_enqueue_chunk(JS:: auto array = JS::Uint8Array::create(realm, array_buffer->byte_length(), *array_buffer); // 5. For each Uint8Array array, enqueue array in ds's transform. - TRY(Streams::transform_stream_default_controller_enqueue(*m_transform->controller(), array)); + m_transform->enqueue(array); return {}; } @@ -159,7 +159,7 @@ WebIDL::ExceptionOr DecompressionStream::decompress_flush_and_enqueue() auto array = JS::Uint8Array::create(realm, array_buffer->byte_length(), *array_buffer); // 5. For each Uint8Array array, enqueue array in ds's transform. - TRY(Streams::transform_stream_default_controller_enqueue(*m_transform->controller(), array)); + m_transform->enqueue(array); return {}; } diff --git a/Libraries/LibWeb/Streams/TransformStream.cpp b/Libraries/LibWeb/Streams/TransformStream.cpp index 125ff3acae9..a770136a1ac 100644 --- a/Libraries/LibWeb/Streams/TransformStream.cpp +++ b/Libraries/LibWeb/Streams/TransformStream.cpp @@ -74,6 +74,13 @@ WebIDL::ExceptionOr> TransformStream::construct_impl(JS return stream; } +// https://streams.spec.whatwg.org/#transformstream-enqueue +void TransformStream::enqueue(JS::Value chunk) +{ + // To enqueue the JavaScript value chunk into a TransformStream stream, perform ! TransformStreamDefaultControllerEnqueue(stream.[[controller]], chunk). + MUST(Streams::transform_stream_default_controller_enqueue(*controller(), chunk)); +} + // https://streams.spec.whatwg.org/#transformstream-set-up void TransformStream::set_up(GC::Ref transform_algorithm, GC::Ptr flush_algorithm, GC::Ptr cancel_algorithm) { diff --git a/Libraries/LibWeb/Streams/TransformStream.h b/Libraries/LibWeb/Streams/TransformStream.h index 753ff12eafe..2d4a9d5b8ad 100644 --- a/Libraries/LibWeb/Streams/TransformStream.h +++ b/Libraries/LibWeb/Streams/TransformStream.h @@ -42,6 +42,7 @@ public: void set_controller(GC::Ptr value) { m_controller = value; } void set_up(GC::Ref, GC::Ptr = {}, GC::Ptr = {}); + void enqueue(JS::Value chunk); private: explicit TransformStream(JS::Realm& realm);