mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-02 14:19:48 +00:00
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.
This commit is contained in:
parent
514a2a1757
commit
26fe7a628c
Notes:
github-actions[bot]
2024-08-21 10:22:54 +00:00
Author: https://github.com/kennethmyhra
Commit: 26fe7a628c
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/1151
Reviewed-by: https://github.com/tcl3 ✅
3 changed files with 26 additions and 1 deletions
|
@ -0,0 +1,3 @@
|
||||||
|
catch Error: error1
|
||||||
|
catch Error: error1
|
||||||
|
catch Error: error1
|
|
@ -0,0 +1,22 @@
|
||||||
|
<script src="../include.js"></script>
|
||||||
|
<script>
|
||||||
|
test(() => {
|
||||||
|
const ts = new TransformStream();
|
||||||
|
ts.readable.cancel(new Error("error1"));
|
||||||
|
ts.writable.getWriter().closed.catch(e => {
|
||||||
|
println(`catch ${e}`);
|
||||||
|
});
|
||||||
|
|
||||||
|
const tsWithBackpressure = new TransformStream({}, undefined, { highWaterMark: 0 });
|
||||||
|
tsWithBackpressure.readable.cancel(new Error("error1"))
|
||||||
|
tsWithBackpressure.writable.getWriter().closed.catch(e => {
|
||||||
|
println(`catch ${e}`)
|
||||||
|
})
|
||||||
|
|
||||||
|
const tsWithoutBackpressure = new TransformStream({}, undefined, { highWaterMark: 1 });
|
||||||
|
tsWithoutBackpressure.readable.cancel(new Error("error1"))
|
||||||
|
tsWithoutBackpressure.writable.getWriter().closed.catch(e => {
|
||||||
|
println(`catch ${e}`)
|
||||||
|
})
|
||||||
|
});
|
||||||
|
</script>
|
|
@ -5168,7 +5168,7 @@ JS::NonnullGCPtr<WebIDL::Promise> transform_stream_default_source_cancel_algorit
|
||||||
WebIDL::react_to_promise(
|
WebIDL::react_to_promise(
|
||||||
*cancel_promise,
|
*cancel_promise,
|
||||||
// 1. If cancelPromise was fulfilled, then:
|
// 1. If cancelPromise was fulfilled, then:
|
||||||
JS::create_heap_function(realm.heap(), [&realm, writable, controller, &stream](JS::Value reason) -> WebIDL::ExceptionOr<JS::Value> {
|
JS::create_heap_function(realm.heap(), [&realm, writable, controller, &stream, reason](JS::Value) -> WebIDL::ExceptionOr<JS::Value> {
|
||||||
// 1. If writable.[[state]] is "errored", reject controller.[[finishPromise]] with writable.[[storedError]].
|
// 1. If writable.[[state]] is "errored", reject controller.[[finishPromise]] with writable.[[storedError]].
|
||||||
if (writable->state() == WritableStream::State::Errored) {
|
if (writable->state() == WritableStream::State::Errored) {
|
||||||
WebIDL::reject_promise(realm, *controller->finish_promise(), writable->stored_error());
|
WebIDL::reject_promise(realm, *controller->finish_promise(), writable->stored_error());
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue