ladybird/Libraries/LibWeb/HTML/PromiseRejectionEvent.cpp
Glenn Skrzypczak 406a32c366 LibWeb/HTML: Make more events trusted
The beforeunload, promiserejection, beforetoggle and toggle events were
previously not tagged as trusted. This commit properly tags the event
so that we match the behaviour implemented by other browsers.
2026-03-23 02:33:56 +01:00

49 lines
1.5 KiB
C++

/*
* Copyright (c) 2022, Andreas Kling <andreas@ladybird.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <LibWeb/Bindings/Intrinsics.h>
#include <LibWeb/Bindings/PromiseRejectionEventPrototype.h>
#include <LibWeb/HTML/PromiseRejectionEvent.h>
namespace Web::HTML {
GC_DEFINE_ALLOCATOR(PromiseRejectionEvent);
GC::Ref<PromiseRejectionEvent> PromiseRejectionEvent::create(JS::Realm& realm, FlyString const& event_name, PromiseRejectionEventInit const& event_init)
{
auto event = realm.create<PromiseRejectionEvent>(realm, event_name, event_init);
event->set_is_trusted(true);
return event;
}
WebIDL::ExceptionOr<GC::Ref<PromiseRejectionEvent>> PromiseRejectionEvent::construct_impl(JS::Realm& realm, FlyString const& event_name, PromiseRejectionEventInit const& event_init)
{
return create(realm, event_name, event_init);
}
PromiseRejectionEvent::PromiseRejectionEvent(JS::Realm& realm, FlyString const& event_name, PromiseRejectionEventInit const& event_init)
: DOM::Event(realm, event_name, event_init)
, m_promise(*event_init.promise)
, m_reason(event_init.reason)
{
}
PromiseRejectionEvent::~PromiseRejectionEvent() = default;
void PromiseRejectionEvent::visit_edges(Cell::Visitor& visitor)
{
Base::visit_edges(visitor);
visitor.visit(m_promise);
visitor.visit(m_reason);
}
void PromiseRejectionEvent::initialize(JS::Realm& realm)
{
WEB_SET_PROTOTYPE_FOR_INTERFACE(PromiseRejectionEvent);
Base::initialize(realm);
}
}