From b9e2c79ebb05e2d671f4310bab8e3f19d1d82f09 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Mon, 24 Mar 2025 15:52:41 -0400 Subject: [PATCH] LibWeb: Pass along the init dictionary for error / buffer change events Otherwise, information stored in the base event init dictionary will be dropped. --- Libraries/LibWeb/HTML/ErrorEvent.cpp | 2 +- .../MediaSourceExtensions/BufferedChangeEvent.cpp | 4 ++-- .../Text/expected/DOM/cancelable-events.txt | 4 ++++ .../wpt-import/dom/events/event-global.txt | 5 ++--- .../LibWeb/Text/input/DOM/cancelable-events.html | 15 +++++++++++++++ 5 files changed, 24 insertions(+), 6 deletions(-) create mode 100644 Tests/LibWeb/Text/expected/DOM/cancelable-events.txt create mode 100644 Tests/LibWeb/Text/input/DOM/cancelable-events.html diff --git a/Libraries/LibWeb/HTML/ErrorEvent.cpp b/Libraries/LibWeb/HTML/ErrorEvent.cpp index 76a19b02d78..dc8a3bffa82 100644 --- a/Libraries/LibWeb/HTML/ErrorEvent.cpp +++ b/Libraries/LibWeb/HTML/ErrorEvent.cpp @@ -25,7 +25,7 @@ WebIDL::ExceptionOr> ErrorEvent::construct_impl(JS::Realm& r } ErrorEvent::ErrorEvent(JS::Realm& realm, FlyString const& event_name, ErrorEventInit const& event_init) - : DOM::Event(realm, event_name) + : DOM::Event(realm, event_name, event_init) , m_message(event_init.message) , m_filename(event_init.filename) , m_lineno(event_init.lineno) diff --git a/Libraries/LibWeb/MediaSourceExtensions/BufferedChangeEvent.cpp b/Libraries/LibWeb/MediaSourceExtensions/BufferedChangeEvent.cpp index bddb8402fb8..529c178a757 100644 --- a/Libraries/LibWeb/MediaSourceExtensions/BufferedChangeEvent.cpp +++ b/Libraries/LibWeb/MediaSourceExtensions/BufferedChangeEvent.cpp @@ -17,8 +17,8 @@ WebIDL::ExceptionOr> BufferedChangeEvent::construct return realm.create(realm, type, event_init); } -BufferedChangeEvent::BufferedChangeEvent(JS::Realm& realm, AK::FlyString const& type, BufferedChangeEventInit const&) - : DOM::Event(realm, type) +BufferedChangeEvent::BufferedChangeEvent(JS::Realm& realm, AK::FlyString const& type, BufferedChangeEventInit const& event_init) + : DOM::Event(realm, type, event_init) { } diff --git a/Tests/LibWeb/Text/expected/DOM/cancelable-events.txt b/Tests/LibWeb/Text/expected/DOM/cancelable-events.txt new file mode 100644 index 00000000000..869bb0d4db8 --- /dev/null +++ b/Tests/LibWeb/Text/expected/DOM/cancelable-events.txt @@ -0,0 +1,4 @@ +event=test1 cancelable=false +event=test2 cancelable=true +event=test3 cancelable=false +event=test4 cancelable=true diff --git a/Tests/LibWeb/Text/expected/wpt-import/dom/events/event-global.txt b/Tests/LibWeb/Text/expected/wpt-import/dom/events/event-global.txt index 8690e08a540..d32db710d3b 100644 --- a/Tests/LibWeb/Text/expected/wpt-import/dom/events/event-global.txt +++ b/Tests/LibWeb/Text/expected/wpt-import/dom/events/event-global.txt @@ -2,13 +2,12 @@ Harness status: OK Found 8 tests -7 Pass -1 Fail +8 Pass Pass event exists on window, which is initially set to undefined Pass window.event is only defined during dispatch Pass window.event is undefined if the target is in a shadow tree (event dispatched outside shadow tree) Pass window.event is undefined if the target is in a shadow tree (event dispatched inside shadow tree) -Fail window.event is undefined inside window.onerror if the target is in a shadow tree (ErrorEvent dispatched inside shadow tree) +Pass window.event is undefined inside window.onerror if the target is in a shadow tree (ErrorEvent dispatched inside shadow tree) Pass window.event is set to the current event during dispatch Pass window.event is set to the current event, which is the event passed to dispatch Pass window.event is set to the current event, which is the event passed to dispatch (2) \ No newline at end of file diff --git a/Tests/LibWeb/Text/input/DOM/cancelable-events.html b/Tests/LibWeb/Text/input/DOM/cancelable-events.html new file mode 100644 index 00000000000..cb137196c70 --- /dev/null +++ b/Tests/LibWeb/Text/input/DOM/cancelable-events.html @@ -0,0 +1,15 @@ + + +