From e0a08f2ab0856af05e39501006ab856e34506e33 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 24 Oct 2022 14:56:29 +0200 Subject: [PATCH] LibWeb: Add EventTarget::has_event_listener(FlyString type) This returns true if the EventTarget has one or more registered listeners for a given even type. --- Userland/Libraries/LibWeb/DOM/EventTarget.cpp | 9 +++++++++ Userland/Libraries/LibWeb/DOM/EventTarget.h | 2 ++ 2 files changed, 11 insertions(+) diff --git a/Userland/Libraries/LibWeb/DOM/EventTarget.cpp b/Userland/Libraries/LibWeb/DOM/EventTarget.cpp index 82cdcd5aac..f3b35d8a33 100644 --- a/Userland/Libraries/LibWeb/DOM/EventTarget.cpp +++ b/Userland/Libraries/LibWeb/DOM/EventTarget.cpp @@ -735,4 +735,13 @@ bool EventTarget::dispatch_event(Event& event) return EventDispatcher::dispatch(*this, event); } +bool EventTarget::has_event_listener(FlyString const& type) const +{ + for (auto& listener : m_event_listener_list) { + if (listener->type == type) + return true; + } + return false; +} + } diff --git a/Userland/Libraries/LibWeb/DOM/EventTarget.h b/Userland/Libraries/LibWeb/DOM/EventTarget.h index e3656435cd..cf83892e57 100644 --- a/Userland/Libraries/LibWeb/DOM/EventTarget.h +++ b/Userland/Libraries/LibWeb/DOM/EventTarget.h @@ -54,6 +54,8 @@ public: WebIDL::CallbackType* event_handler_attribute(FlyString const& name); void set_event_handler_attribute(FlyString const& name, WebIDL::CallbackType*); + bool has_event_listener(FlyString const& type) const; + protected: explicit EventTarget(JS::Realm&);