mirror of
https://github.com/RGBCube/serenity
synced 2025-07-23 10:47:36 +00:00
LibWeb: Implement ToggleEvent for HTMLDetailsElement
This commit is contained in:
parent
f598a357ad
commit
153ae93f9c
6 changed files with 98 additions and 3 deletions
|
@ -395,6 +395,7 @@ set(SOURCES
|
||||||
HTML/TextMetrics.cpp
|
HTML/TextMetrics.cpp
|
||||||
HTML/Timer.cpp
|
HTML/Timer.cpp
|
||||||
HTML/TimeRanges.cpp
|
HTML/TimeRanges.cpp
|
||||||
|
HTML/ToggleEvent.cpp
|
||||||
HTML/TrackEvent.cpp
|
HTML/TrackEvent.cpp
|
||||||
HTML/TraversableNavigable.cpp
|
HTML/TraversableNavigable.cpp
|
||||||
HTML/VideoTrack.cpp
|
HTML/VideoTrack.cpp
|
||||||
|
|
|
@ -425,7 +425,6 @@ class NavigationDestination;
|
||||||
class NavigationHistoryEntry;
|
class NavigationHistoryEntry;
|
||||||
class NavigationTransition;
|
class NavigationTransition;
|
||||||
class Navigator;
|
class Navigator;
|
||||||
struct NavigationParams;
|
|
||||||
class Origin;
|
class Origin;
|
||||||
class PageTransitionEvent;
|
class PageTransitionEvent;
|
||||||
class Path2D;
|
class Path2D;
|
||||||
|
@ -438,6 +437,7 @@ class SubmitEvent;
|
||||||
class TextMetrics;
|
class TextMetrics;
|
||||||
class Timer;
|
class Timer;
|
||||||
class TimeRanges;
|
class TimeRanges;
|
||||||
|
class ToggleEvent;
|
||||||
class TrackEvent;
|
class TrackEvent;
|
||||||
class TraversableNavigable;
|
class TraversableNavigable;
|
||||||
class VideoTrack;
|
class VideoTrack;
|
||||||
|
@ -453,15 +453,16 @@ class WorkerLocation;
|
||||||
class WorkerNavigator;
|
class WorkerNavigator;
|
||||||
|
|
||||||
enum class MediaSeekMode;
|
enum class MediaSeekMode;
|
||||||
|
enum class SandboxingFlagSet;
|
||||||
|
|
||||||
struct CrossOriginOpenerPolicy;
|
struct CrossOriginOpenerPolicy;
|
||||||
struct CrossOriginOpenerPolicyEnforcementResult;
|
struct CrossOriginOpenerPolicyEnforcementResult;
|
||||||
struct Environment;
|
struct Environment;
|
||||||
struct EnvironmentSettingsObject;
|
struct EnvironmentSettingsObject;
|
||||||
struct NavigationParams;
|
struct NavigationParams;
|
||||||
struct POSTResource;
|
struct NavigationParams;
|
||||||
struct PolicyContainer;
|
struct PolicyContainer;
|
||||||
enum class SandboxingFlagSet;
|
struct POSTResource;
|
||||||
struct SerializedFormData;
|
struct SerializedFormData;
|
||||||
struct SessionHistoryEntry;
|
struct SessionHistoryEntry;
|
||||||
}
|
}
|
||||||
|
|
36
Userland/Libraries/LibWeb/HTML/ToggleEvent.cpp
Normal file
36
Userland/Libraries/LibWeb/HTML/ToggleEvent.cpp
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2023, Tim Flynn <trflynn89@serenityos.org>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <LibWeb/Bindings/Intrinsics.h>
|
||||||
|
#include <LibWeb/Bindings/ToggleEventPrototype.h>
|
||||||
|
#include <LibWeb/HTML/ToggleEvent.h>
|
||||||
|
|
||||||
|
namespace Web::HTML {
|
||||||
|
|
||||||
|
JS::NonnullGCPtr<ToggleEvent> ToggleEvent::create(JS::Realm& realm, FlyString const& event_name, ToggleEventInit event_init)
|
||||||
|
{
|
||||||
|
return realm.heap().allocate<ToggleEvent>(realm, realm, event_name, move(event_init));
|
||||||
|
}
|
||||||
|
|
||||||
|
WebIDL::ExceptionOr<JS::NonnullGCPtr<ToggleEvent>> ToggleEvent::construct_impl(JS::Realm& realm, FlyString const& event_name, ToggleEventInit event_init)
|
||||||
|
{
|
||||||
|
return create(realm, event_name, move(event_init));
|
||||||
|
}
|
||||||
|
|
||||||
|
ToggleEvent::ToggleEvent(JS::Realm& realm, FlyString const& event_name, ToggleEventInit event_init)
|
||||||
|
: DOM::Event(realm, event_name, event_init)
|
||||||
|
, m_old_state(move(event_init.old_state))
|
||||||
|
, m_new_state(move(event_init.new_state))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void ToggleEvent::initialize(JS::Realm& realm)
|
||||||
|
{
|
||||||
|
Base::initialize(realm);
|
||||||
|
set_prototype(&Bindings::ensure_web_prototype<Bindings::ToggleEventPrototype>(realm, "ToggleEvent"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
42
Userland/Libraries/LibWeb/HTML/ToggleEvent.h
Normal file
42
Userland/Libraries/LibWeb/HTML/ToggleEvent.h
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2023, Tim Flynn <trflynn89@serenityos.org>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <AK/FlyString.h>
|
||||||
|
#include <AK/String.h>
|
||||||
|
#include <LibWeb/DOM/Event.h>
|
||||||
|
|
||||||
|
namespace Web::HTML {
|
||||||
|
|
||||||
|
struct ToggleEventInit : public DOM::EventInit {
|
||||||
|
String old_state;
|
||||||
|
String new_state;
|
||||||
|
};
|
||||||
|
|
||||||
|
class ToggleEvent : public DOM::Event {
|
||||||
|
WEB_PLATFORM_OBJECT(ToggleEvent, DOM::Event);
|
||||||
|
|
||||||
|
public:
|
||||||
|
[[nodiscard]] static JS::NonnullGCPtr<ToggleEvent> create(JS::Realm&, FlyString const& event_name, ToggleEventInit = {});
|
||||||
|
static WebIDL::ExceptionOr<JS::NonnullGCPtr<ToggleEvent>> construct_impl(JS::Realm&, FlyString const& event_name, ToggleEventInit);
|
||||||
|
|
||||||
|
// https://html.spec.whatwg.org/multipage/interaction.html#dom-toggleevent-oldstate
|
||||||
|
String const& old_state() const { return m_old_state; }
|
||||||
|
|
||||||
|
// https://html.spec.whatwg.org/multipage/interaction.html#dom-toggleevent-newstate
|
||||||
|
String const& new_state() const { return m_new_state; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
ToggleEvent(JS::Realm&, FlyString const& event_name, ToggleEventInit event_init);
|
||||||
|
|
||||||
|
virtual void initialize(JS::Realm&) override;
|
||||||
|
|
||||||
|
String m_old_state;
|
||||||
|
String m_new_state;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
14
Userland/Libraries/LibWeb/HTML/ToggleEvent.idl
Normal file
14
Userland/Libraries/LibWeb/HTML/ToggleEvent.idl
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
#import <DOM/Event.idl>
|
||||||
|
|
||||||
|
// https://html.spec.whatwg.org/multipage/interaction.html#toggleevent
|
||||||
|
[Exposed=Window]
|
||||||
|
interface ToggleEvent : Event {
|
||||||
|
constructor(DOMString type, optional ToggleEventInit eventInitDict = {});
|
||||||
|
readonly attribute DOMString oldState;
|
||||||
|
readonly attribute DOMString newState;
|
||||||
|
};
|
||||||
|
|
||||||
|
dictionary ToggleEventInit : EventInit {
|
||||||
|
DOMString oldState = "";
|
||||||
|
DOMString newState = "";
|
||||||
|
};
|
|
@ -184,6 +184,7 @@ libweb_js_bindings(HTML/Storage)
|
||||||
libweb_js_bindings(HTML/SubmitEvent)
|
libweb_js_bindings(HTML/SubmitEvent)
|
||||||
libweb_js_bindings(HTML/TextMetrics)
|
libweb_js_bindings(HTML/TextMetrics)
|
||||||
libweb_js_bindings(HTML/TimeRanges)
|
libweb_js_bindings(HTML/TimeRanges)
|
||||||
|
libweb_js_bindings(HTML/ToggleEvent)
|
||||||
libweb_js_bindings(HTML/TrackEvent)
|
libweb_js_bindings(HTML/TrackEvent)
|
||||||
libweb_js_bindings(HTML/VideoTrack)
|
libweb_js_bindings(HTML/VideoTrack)
|
||||||
libweb_js_bindings(HTML/VideoTrackList)
|
libweb_js_bindings(HTML/VideoTrackList)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue