From 093e66afc092bd14402381b498bdcf11c6579834 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Fri, 25 Feb 2022 17:30:39 +0100 Subject: [PATCH] LibWeb: Make document.createEvent("UIEvent") actually create a UIEvent There were two things preventing this from working right: - UIEvents::UIEvent::create() was actually just DOM::Event::create() - We didn't return the right JavaScript wrapper type for UIEvent --- Userland/Libraries/LibWeb/Bindings/EventWrapperFactory.cpp | 4 +++- Userland/Libraries/LibWeb/UIEvents/UIEvent.h | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Userland/Libraries/LibWeb/Bindings/EventWrapperFactory.cpp b/Userland/Libraries/LibWeb/Bindings/EventWrapperFactory.cpp index 7e26b4b9e3..a048827b68 100644 --- a/Userland/Libraries/LibWeb/Bindings/EventWrapperFactory.cpp +++ b/Userland/Libraries/LibWeb/Bindings/EventWrapperFactory.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, Andreas Kling + * Copyright (c) 2020-2022, Andreas Kling * Copyright (c) 2021, Luke Wilde * * SPDX-License-Identifier: BSD-2-Clause @@ -42,6 +42,8 @@ EventWrapper* wrap(JS::GlobalObject& global_object, DOM::Event& event) return static_cast(wrap_impl(global_object, static_cast(event))); if (is(event)) return static_cast(wrap_impl(global_object, static_cast(event))); + if (is(event)) + return static_cast(wrap_impl(global_object, static_cast(event))); return static_cast(wrap_impl(global_object, event)); } diff --git a/Userland/Libraries/LibWeb/UIEvents/UIEvent.h b/Userland/Libraries/LibWeb/UIEvents/UIEvent.h index 9126eac520..3393d0b2d6 100644 --- a/Userland/Libraries/LibWeb/UIEvents/UIEvent.h +++ b/Userland/Libraries/LibWeb/UIEvents/UIEvent.h @@ -21,6 +21,11 @@ class UIEvent : public DOM::Event { public: using WrapperType = Bindings::UIEventWrapper; + static NonnullRefPtr create(FlyString const& type) + { + return adopt_ref(*new UIEvent(type)); + } + static NonnullRefPtr create_with_global_object(Bindings::WindowObject&, FlyString const& event_name, UIEventInit const& event_init) { return adopt_ref(*new UIEvent(event_name, event_init));