
With this change, we now have ~1200 CellAllocators across both LibJS and LibWeb in a normal WebContent instance. This gives us a minimum heap size of 4.7 MiB in the scenario where we only have one cell allocated per type. Of course, in practice there will be many more of each type, so the effective overhead is quite a bit smaller than that in practice. I left a few types unconverted to this mechanism because I got tired of doing this. :^)
51 lines
1.6 KiB
C++
51 lines
1.6 KiB
C++
/*
|
|
* Copyright (c) 2021, Dex♪ <dexes.ttp@gmail.com>
|
|
* Copyright (c) 2022, Andreas Kling <kling@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <AK/FlyString.h>
|
|
#include <LibWeb/DOM/Event.h>
|
|
|
|
namespace Web::HTML {
|
|
|
|
// FIXME: Include ServiceWorker
|
|
using MessageEventSource = Variant<JS::Handle<WindowProxy>, JS::Handle<MessagePort>>;
|
|
|
|
struct MessageEventInit : public DOM::EventInit {
|
|
JS::Value data { JS::js_null() };
|
|
String origin {};
|
|
String last_event_id {};
|
|
Optional<MessageEventSource> source;
|
|
};
|
|
|
|
class MessageEvent : public DOM::Event {
|
|
WEB_PLATFORM_OBJECT(MessageEvent, DOM::Event);
|
|
JS_DECLARE_ALLOCATOR(MessageEvent);
|
|
|
|
public:
|
|
[[nodiscard]] static JS::NonnullGCPtr<MessageEvent> create(JS::Realm&, FlyString const& event_name, MessageEventInit const& = {});
|
|
static WebIDL::ExceptionOr<JS::NonnullGCPtr<MessageEvent>> construct_impl(JS::Realm&, FlyString const& event_name, MessageEventInit const&);
|
|
|
|
MessageEvent(JS::Realm&, FlyString const& event_name, MessageEventInit const& event_init);
|
|
virtual ~MessageEvent() override;
|
|
|
|
JS::Value data() const { return m_data; }
|
|
String const& origin() const { return m_origin; }
|
|
String const& last_event_id() const { return m_last_event_id; }
|
|
Variant<JS::Handle<WindowProxy>, JS::Handle<MessagePort>, Empty> source() const;
|
|
|
|
private:
|
|
virtual void initialize(JS::Realm&) override;
|
|
virtual void visit_edges(Cell::Visitor&) override;
|
|
|
|
JS::Value m_data;
|
|
String m_origin;
|
|
String m_last_event_id;
|
|
Optional<MessageEventSource> m_source;
|
|
};
|
|
|
|
}
|