From 5ac82efbe1c84a0162d8b53ba451d7292b6ae5e5 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 26 Sep 2021 02:52:15 +0200 Subject: [PATCH] LibWeb: Mark event listeners generated by event handler attributes We have to mark the EventListener objects so that we can tell them apart from listeners added via the addEventListener() API. This makes element.onfoo getters actually return the handler function. --- Userland/Libraries/LibWeb/DOM/EventTarget.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Userland/Libraries/LibWeb/DOM/EventTarget.cpp b/Userland/Libraries/LibWeb/DOM/EventTarget.cpp index 4e2b7886a9..ab81383542 100644 --- a/Userland/Libraries/LibWeb/DOM/EventTarget.cpp +++ b/Userland/Libraries/LibWeb/DOM/EventTarget.cpp @@ -124,7 +124,7 @@ void EventTarget::set_event_handler_attribute(FlyString const& name, HTML::Event RefPtr listener; if (!value.callback.is_null()) { - listener = adopt_ref(*new DOM::EventListener(move(value.callback))); + listener = adopt_ref(*new DOM::EventListener(move(value.callback), true)); } else { StringBuilder builder; builder.appendff("function {}(event) {{\n{}\n}}", name, value.string); @@ -136,7 +136,7 @@ void EventTarget::set_event_handler_attribute(FlyString const& name, HTML::Event } auto* function = JS::ECMAScriptFunctionObject::create(target->script_execution_context()->realm().global_object(), name, program->body(), program->parameters(), program->function_length(), nullptr, JS::FunctionKind::Regular, false, false); VERIFY(function); - listener = adopt_ref(*new DOM::EventListener(JS::make_handle(static_cast(function)))); + listener = adopt_ref(*new DOM::EventListener(JS::make_handle(static_cast(function)), true)); } if (listener) { for (auto& registered_listener : target->listeners()) {