From 26fe7a628c41d91e045970a9f77136a8e47f02c8 Mon Sep 17 00:00:00 2001 From: Kenneth Myhra Date: Tue, 20 Aug 2024 20:02:35 +0200 Subject: [PATCH] LibWeb: Capture incoming reason argument Capture the incoming reason argument to transform_stream_default_source_cancel_algorithm() on the on_fulfilled_callback() of WebIDL::react_to_promise() on step 7. --- .../TransformStream-readable-cancel.txt | 3 +++ .../TransformStream-readable-cancel.html | 22 +++++++++++++++++++ .../LibWeb/Streams/AbstractOperations.cpp | 2 +- 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 Tests/LibWeb/Text/expected/Streams/TransformStream-readable-cancel.txt create mode 100644 Tests/LibWeb/Text/input/Streams/TransformStream-readable-cancel.html diff --git a/Tests/LibWeb/Text/expected/Streams/TransformStream-readable-cancel.txt b/Tests/LibWeb/Text/expected/Streams/TransformStream-readable-cancel.txt new file mode 100644 index 00000000000..bb6822e559c --- /dev/null +++ b/Tests/LibWeb/Text/expected/Streams/TransformStream-readable-cancel.txt @@ -0,0 +1,3 @@ +catch Error: error1 +catch Error: error1 +catch Error: error1 diff --git a/Tests/LibWeb/Text/input/Streams/TransformStream-readable-cancel.html b/Tests/LibWeb/Text/input/Streams/TransformStream-readable-cancel.html new file mode 100644 index 00000000000..e6c11690caa --- /dev/null +++ b/Tests/LibWeb/Text/input/Streams/TransformStream-readable-cancel.html @@ -0,0 +1,22 @@ + + diff --git a/Userland/Libraries/LibWeb/Streams/AbstractOperations.cpp b/Userland/Libraries/LibWeb/Streams/AbstractOperations.cpp index 1fb00fa7781..97174cd619e 100644 --- a/Userland/Libraries/LibWeb/Streams/AbstractOperations.cpp +++ b/Userland/Libraries/LibWeb/Streams/AbstractOperations.cpp @@ -5168,7 +5168,7 @@ JS::NonnullGCPtr transform_stream_default_source_cancel_algorit WebIDL::react_to_promise( *cancel_promise, // 1. If cancelPromise was fulfilled, then: - JS::create_heap_function(realm.heap(), [&realm, writable, controller, &stream](JS::Value reason) -> WebIDL::ExceptionOr { + JS::create_heap_function(realm.heap(), [&realm, writable, controller, &stream, reason](JS::Value) -> WebIDL::ExceptionOr { // 1. If writable.[[state]] is "errored", reject controller.[[finishPromise]] with writable.[[storedError]]. if (writable->state() == WritableStream::State::Errored) { WebIDL::reject_promise(realm, *controller->finish_promise(), writable->stored_error());