From fc9abee84b4f3be4e8dee33ad32ee0d0c36285a6 Mon Sep 17 00:00:00 2001 From: Luke Date: Sat, 10 Apr 2021 20:11:04 +0100 Subject: [PATCH] LibWeb: Add Event.initEvent Used by YouTube after creating an event with Document.createEvent --- Userland/Libraries/LibWeb/DOM/Event.cpp | 23 +++++++++++++++++++++++ Userland/Libraries/LibWeb/DOM/Event.h | 4 ++++ Userland/Libraries/LibWeb/DOM/Event.idl | 2 ++ 3 files changed, 29 insertions(+) diff --git a/Userland/Libraries/LibWeb/DOM/Event.cpp b/Userland/Libraries/LibWeb/DOM/Event.cpp index 9fd75ab226..faab43f363 100644 --- a/Userland/Libraries/LibWeb/DOM/Event.cpp +++ b/Userland/Libraries/LibWeb/DOM/Event.cpp @@ -56,4 +56,27 @@ void Event::set_cancelled_flag() m_cancelled = true; } +// https://dom.spec.whatwg.org/#concept-event-initialize +void Event::initialize(const String& type, bool bubbles, bool cancelable) +{ + m_initialized = true; + m_stop_propagation = false; + m_stop_immediate_propagation = false; + m_cancelled = false; + m_is_trusted = false; + m_target = nullptr; + m_type = type; + m_bubbles = bubbles; + m_cancelable = cancelable; +} + +// https://dom.spec.whatwg.org/#dom-event-initevent +void Event::init_event(const String& type, bool bubbles, bool cancelable) +{ + if (m_dispatch) + return; + + initialize(type, bubbles, cancelable); +} + } diff --git a/Userland/Libraries/LibWeb/DOM/Event.h b/Userland/Libraries/LibWeb/DOM/Event.h index 54a91120e9..439fe71a20 100644 --- a/Userland/Libraries/LibWeb/DOM/Event.h +++ b/Userland/Libraries/LibWeb/DOM/Event.h @@ -154,6 +154,8 @@ public: m_stop_immediate_propagation = true; } + void init_event(const String&, bool, bool); + protected: explicit Event(const FlyString& type) : m_type(type) @@ -161,6 +163,8 @@ protected: { } + void initialize(const String&, bool, bool); + private: FlyString m_type; RefPtr m_target; diff --git a/Userland/Libraries/LibWeb/DOM/Event.idl b/Userland/Libraries/LibWeb/DOM/Event.idl index a12995e92e..1b998c6e11 100644 --- a/Userland/Libraries/LibWeb/DOM/Event.idl +++ b/Userland/Libraries/LibWeb/DOM/Event.idl @@ -23,4 +23,6 @@ interface Event { readonly attribute boolean isTrusted; + undefined initEvent(DOMString type, optional boolean bubbles = false, optional boolean cancelable = false); + };