1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 08:57:34 +00:00

LibWeb: Add the missing PageTransitionEvent IDL constructor

This commit is contained in:
Idan Horowitz 2021-10-01 19:05:28 +03:00 committed by Andreas Kling
parent 4d71f22673
commit 1c4404c46a
4 changed files with 25 additions and 9 deletions

View file

@ -282,12 +282,14 @@ float Window::scroll_y() const
}
// https://html.spec.whatwg.org/#fire-a-page-transition-event
void Window::fire_a_page_transition_event(FlyString event_name, bool persisted)
void Window::fire_a_page_transition_event(FlyString const& event_name, bool persisted)
{
// To fire a page transition event named eventName at a Window window with a boolean persisted,
// fire an event named eventName at window, using PageTransitionEvent,
// with the persisted attribute initialized to persisted,
auto event = HTML::PageTransitionEvent::create(move(event_name), persisted);
HTML::PageTransitionEventInit event_init {};
event_init.persisted = persisted;
auto event = HTML::PageTransitionEvent::create(event_name, event_init);
// ...the cancelable attribute initialized to true,
event->set_cancelable(true);

View file

@ -87,7 +87,7 @@ public:
float scroll_x() const;
float scroll_y() const;
void fire_a_page_transition_event(FlyString event_name, bool persisted);
void fire_a_page_transition_event(FlyString const& event_name, bool persisted);
float device_pixel_ratio() const;

View file

@ -10,13 +10,21 @@
namespace Web::HTML {
struct PageTransitionEventInit : public DOM::EventInit {
bool persisted { false };
};
class PageTransitionEvent final : public DOM::Event {
public:
using WrapperType = Bindings::PageTransitionEventWrapper;
static NonnullRefPtr<PageTransitionEvent> create(FlyString event_name, bool persisted)
static NonnullRefPtr<PageTransitionEvent> create(FlyString const& event_name, PageTransitionEventInit const& event_init)
{
return adopt_ref(*new PageTransitionEvent(move(event_name), persisted));
return adopt_ref(*new PageTransitionEvent(event_name, event_init));
}
static NonnullRefPtr<PageTransitionEvent> create_with_global_object(Bindings::WindowObject&, FlyString const& event_name, PageTransitionEventInit const& event_init)
{
return PageTransitionEvent::create(event_name, event_init);
}
virtual ~PageTransitionEvent() override = default;
@ -24,9 +32,9 @@ public:
bool persisted() const { return m_persisted; }
protected:
PageTransitionEvent(FlyString event_name, bool persisted)
: DOM::Event(move(event_name))
, m_persisted(persisted)
PageTransitionEvent(FlyString const& event_name, PageTransitionEventInit const& event_init)
: DOM::Event(event_name, event_init)
, m_persisted(event_init.persisted)
{
}

View file

@ -1,5 +1,11 @@
#import <DOM/Event.idl>
interface PageTransitionEvent : Event {
constructor(DOMString type, optional PageTransitionEventInit eventInitDict = {});
readonly attribute boolean persisted;
};
dictionary PageTransitionEventInit : EventInit {
boolean persisted = false;
};