ladybird/Userland/Libraries/LibWeb/Clipboard/ClipboardEvent.cpp
Timothy Flynn 0b0d44da27 LibWeb: Implement the ClipboardEvent IDL interface
We don't actually generate any such events ourselves. But Google Lens
will create one with the DataTransfer attribute set to that of any drop
event we send it.
2024-08-22 14:21:13 +02:00

41 lines
1.1 KiB
C++

/*
* Copyright (c) 2024, Tim Flynn <trflynn89@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <LibJS/Runtime/Realm.h>
#include <LibWeb/Bindings/ClipboardEventPrototype.h>
#include <LibWeb/Bindings/Intrinsics.h>
#include <LibWeb/Clipboard/ClipboardEvent.h>
namespace Web::Clipboard {
JS_DEFINE_ALLOCATOR(ClipboardEvent);
JS::NonnullGCPtr<ClipboardEvent> ClipboardEvent::construct_impl(JS::Realm& realm, FlyString const& event_name, ClipboardEventInit const& event_init)
{
return realm.heap().allocate<ClipboardEvent>(realm, realm, event_name, event_init);
}
ClipboardEvent::ClipboardEvent(JS::Realm& realm, FlyString const& event_name, ClipboardEventInit const& event_init)
: DOM::Event(realm, event_name, event_init)
, m_clipboard_data(event_init.clipboard_data)
{
}
ClipboardEvent::~ClipboardEvent() = default;
void ClipboardEvent::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(ClipboardEvent);
}
void ClipboardEvent::visit_edges(JS::Cell::Visitor& visitor)
{
Base::visit_edges(visitor);
visitor.visit(m_clipboard_data);
}
}