diff --git a/Userland/Libraries/LibWeb/CMakeLists.txt b/Userland/Libraries/LibWeb/CMakeLists.txt index f5c04f78c4..b2e36a510a 100644 --- a/Userland/Libraries/LibWeb/CMakeLists.txt +++ b/Userland/Libraries/LibWeb/CMakeLists.txt @@ -175,7 +175,6 @@ set(SOURCES HTML/Parser/StackOfOpenElements.cpp HTML/Scripting/ClassicScript.cpp HTML/Scripting/Script.cpp - HTML/SubmitEvent.cpp HTML/SyntaxHighlighter/SyntaxHighlighter.cpp HTML/TagNames.cpp HTML/WebSocket.cpp diff --git a/Userland/Libraries/LibWeb/HTML/HTMLFormElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLFormElement.cpp index 5d9e3ef437..3c8e3d59d4 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLFormElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLFormElement.cpp @@ -59,7 +59,9 @@ void HTMLFormElement::submit_form(RefPtr submitter, bool from_submi if (submitter != this) submitter_button = submitter; - auto submit_event = SubmitEvent::create(EventNames::submit, submitter_button); + SubmitEventInit event_init {}; + event_init.submitter = submitter_button; + auto submit_event = SubmitEvent::create(EventNames::submit, event_init); submit_event->set_bubbles(true); submit_event->set_cancelable(true); bool continue_ = dispatch_event(submit_event); diff --git a/Userland/Libraries/LibWeb/HTML/SubmitEvent.cpp b/Userland/Libraries/LibWeb/HTML/SubmitEvent.cpp deleted file mode 100644 index fc63ef6ded..0000000000 --- a/Userland/Libraries/LibWeb/HTML/SubmitEvent.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2021, Andreas Kling - * - * SPDX-License-Identifier: BSD-2-Clause - */ - -#include -#include - -namespace Web::HTML { - -NonnullRefPtr SubmitEvent::create(const FlyString& event_name, RefPtr submitter) -{ - return adopt_ref(*new SubmitEvent(event_name, move(submitter))); -} - -SubmitEvent::SubmitEvent(const FlyString& event_name, RefPtr submitter) - : DOM::Event(event_name) - , m_submitter(submitter) -{ -} - -SubmitEvent::~SubmitEvent() -{ -} - -RefPtr SubmitEvent::submitter() const -{ - return m_submitter; -} - -} diff --git a/Userland/Libraries/LibWeb/HTML/SubmitEvent.h b/Userland/Libraries/LibWeb/HTML/SubmitEvent.h index d8cbcd7246..54922b9a65 100644 --- a/Userland/Libraries/LibWeb/HTML/SubmitEvent.h +++ b/Userland/Libraries/LibWeb/HTML/SubmitEvent.h @@ -6,22 +6,39 @@ #pragma once +#include #include +#include namespace Web::HTML { +struct SubmitEventInit : public DOM::EventInit { + RefPtr submitter { nullptr }; +}; + class SubmitEvent final : public DOM::Event { public: using WrapperType = Bindings::SubmitEventWrapper; - static NonnullRefPtr create(const FlyString& event_name, RefPtr submitter); + static NonnullRefPtr create(FlyString const& event_name, SubmitEventInit const& event_init) + { + return adopt_ref(*new SubmitEvent(event_name, event_init)); + } + static NonnullRefPtr create_with_global_object(Bindings::WindowObject&, FlyString const& event_name, SubmitEventInit const& event_init) + { + return SubmitEvent::create(event_name, event_init); + } - virtual ~SubmitEvent() override; + virtual ~SubmitEvent() override = default; - RefPtr submitter() const; + RefPtr submitter() const { return m_submitter; } private: - SubmitEvent(const FlyString& event_name, RefPtr submitter); + SubmitEvent(FlyString const& event_name, SubmitEventInit const& event_init) + : DOM::Event(event_name, event_init) + , m_submitter(event_init.submitter) + { + } RefPtr m_submitter; }; diff --git a/Userland/Libraries/LibWeb/HTML/SubmitEvent.idl b/Userland/Libraries/LibWeb/HTML/SubmitEvent.idl index c816ae663f..30254534eb 100644 --- a/Userland/Libraries/LibWeb/HTML/SubmitEvent.idl +++ b/Userland/Libraries/LibWeb/HTML/SubmitEvent.idl @@ -1,5 +1,11 @@ +#import + interface SubmitEvent : Event { + constructor(DOMString type, optional SubmitEventInit eventInitDict = {}); readonly attribute HTMLElement? submitter; - +}; + +dictionary SubmitEventInit : EventInit { + HTMLElement? submitter = null; };