mirror of
https://github.com/RGBCube/serenity
synced 2025-05-18 21:15:09 +00:00
LibWeb: Introduce the FormDataEvent interface
This commit is contained in:
parent
d5b5b94a35
commit
a6cdf6374f
6 changed files with 95 additions and 0 deletions
|
@ -186,6 +186,7 @@ set(SOURCES
|
|||
HTML/Focus.cpp
|
||||
HTML/FormAssociatedElement.cpp
|
||||
HTML/FormControlInfrastructure.cpp
|
||||
HTML/FormDataEvent.cpp
|
||||
HTML/GlobalEventHandlers.cpp
|
||||
HTML/History.cpp
|
||||
HTML/HTMLAnchorElement.cpp
|
||||
|
|
|
@ -246,6 +246,7 @@ struct EnvironmentSettingsObject;
|
|||
class ErrorEvent;
|
||||
class EventHandler;
|
||||
class EventLoop;
|
||||
class FormDataEvent;
|
||||
class HTMLAnchorElement;
|
||||
class HTMLAreaElement;
|
||||
class HTMLAudioElement;
|
||||
|
|
40
Userland/Libraries/LibWeb/HTML/FormDataEvent.cpp
Normal file
40
Userland/Libraries/LibWeb/HTML/FormDataEvent.cpp
Normal file
|
@ -0,0 +1,40 @@
|
|||
/*
|
||||
* Copyright (c) 2023, Kenneth Myhra <kennethmyhra@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <LibWeb/Bindings/FormDataEventPrototype.h>
|
||||
#include <LibWeb/Bindings/Intrinsics.h>
|
||||
#include <LibWeb/HTML/FormDataEvent.h>
|
||||
|
||||
namespace Web::HTML {
|
||||
|
||||
WebIDL::ExceptionOr<JS::NonnullGCPtr<FormDataEvent>> FormDataEvent::construct_impl(JS::Realm& realm, DeprecatedString const& event_name, FormDataEventInit const& event_init)
|
||||
{
|
||||
return MUST_OR_THROW_OOM(realm.heap().allocate<FormDataEvent>(realm, realm, event_name, event_init));
|
||||
}
|
||||
|
||||
FormDataEvent::FormDataEvent(JS::Realm& realm, DeprecatedString const& event_name, FormDataEventInit const& event_init)
|
||||
: DOM::Event(realm, event_name, event_init)
|
||||
, m_form_data(event_init.form_data)
|
||||
{
|
||||
}
|
||||
|
||||
FormDataEvent::~FormDataEvent() = default;
|
||||
|
||||
JS::ThrowCompletionOr<void> FormDataEvent::initialize(JS::Realm& realm)
|
||||
{
|
||||
MUST_OR_THROW_OOM(Base::initialize(realm));
|
||||
set_prototype(&Bindings::ensure_web_prototype<Bindings::FormDataEventPrototype>(realm, "FormDataEvent"));
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
void FormDataEvent::visit_edges(Cell::Visitor& visitor)
|
||||
{
|
||||
Base::visit_edges(visitor);
|
||||
visitor.visit(m_form_data);
|
||||
}
|
||||
|
||||
}
|
38
Userland/Libraries/LibWeb/HTML/FormDataEvent.h
Normal file
38
Userland/Libraries/LibWeb/HTML/FormDataEvent.h
Normal file
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* Copyright (c) 2023, Kenneth Myhra <kennethmyhra@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <LibWeb/DOM/Event.h>
|
||||
#include <LibWeb/XHR/FormData.h>
|
||||
|
||||
namespace Web::HTML {
|
||||
|
||||
struct FormDataEventInit : public DOM::EventInit {
|
||||
JS::GCPtr<XHR::FormData> form_data {};
|
||||
};
|
||||
|
||||
class FormDataEvent final : public DOM::Event {
|
||||
WEB_PLATFORM_OBJECT(FormDataEvent, DOM::Event);
|
||||
|
||||
public:
|
||||
static WebIDL::ExceptionOr<JS::NonnullGCPtr<FormDataEvent>> construct_impl(JS::Realm&, DeprecatedString const& event_name, FormDataEventInit const& event_init);
|
||||
|
||||
virtual ~FormDataEvent() override;
|
||||
|
||||
JS::GCPtr<XHR::FormData> form_data() const { return m_form_data; }
|
||||
|
||||
private:
|
||||
FormDataEvent(JS::Realm&, DeprecatedString const& event_name, FormDataEventInit const& event_init);
|
||||
|
||||
JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
|
||||
|
||||
virtual void visit_edges(Cell::Visitor&) override;
|
||||
|
||||
JS::GCPtr<XHR::FormData> m_form_data;
|
||||
};
|
||||
|
||||
}
|
14
Userland/Libraries/LibWeb/HTML/FormDataEvent.idl
Normal file
14
Userland/Libraries/LibWeb/HTML/FormDataEvent.idl
Normal file
|
@ -0,0 +1,14 @@
|
|||
#import <DOM/Event.idl>
|
||||
#import <XHR/FormData.idl>
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#the-formdataevent-interface
|
||||
[Exposed=Window]
|
||||
interface FormDataEvent : Event {
|
||||
constructor(DOMString type, FormDataEventInit eventInitDict);
|
||||
|
||||
readonly attribute FormData formData;
|
||||
};
|
||||
|
||||
dictionary FormDataEventInit : EventInit {
|
||||
required FormData formData;
|
||||
};
|
|
@ -71,6 +71,7 @@ libweb_js_bindings(HTML/CloseEvent)
|
|||
libweb_js_bindings(HTML/DOMParser)
|
||||
libweb_js_bindings(HTML/DOMStringMap)
|
||||
libweb_js_bindings(HTML/ErrorEvent)
|
||||
libweb_js_bindings(HTML/FormDataEvent)
|
||||
libweb_js_bindings(HTML/History)
|
||||
libweb_js_bindings(HTML/HTMLAnchorElement)
|
||||
libweb_js_bindings(HTML/HTMLAreaElement)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue