diff options
author | Andreas Kling <kling@serenityos.org> | 2022-09-01 20:59:51 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2022-09-06 00:27:09 +0200 |
commit | 2ff7e37048e0296ae6dc3653ca69da7bb1fa22dc (patch) | |
tree | c3d1628838d506e822244f2c78a26a1ce057125b /Userland/Libraries/LibWeb/HTML/MessageChannel.h | |
parent | 2bba97964b1daa30877ba715f6e058de5a5100c5 (diff) | |
download | serenity-2ff7e37048e0296ae6dc3653ca69da7bb1fa22dc.zip |
LibWeb: Make MessageChannel GC-allocated
Diffstat (limited to 'Userland/Libraries/LibWeb/HTML/MessageChannel.h')
-rw-r--r-- | Userland/Libraries/LibWeb/HTML/MessageChannel.h | 32 |
1 files changed, 12 insertions, 20 deletions
diff --git a/Userland/Libraries/LibWeb/HTML/MessageChannel.h b/Userland/Libraries/LibWeb/HTML/MessageChannel.h index 7ac38e3912..7c7d65210e 100644 --- a/Userland/Libraries/LibWeb/HTML/MessageChannel.h +++ b/Userland/Libraries/LibWeb/HTML/MessageChannel.h @@ -1,34 +1,22 @@ /* - * Copyright (c) 2021, Andreas Kling <kling@serenityos.org> + * Copyright (c) 2021-2022, Andreas Kling <kling@serenityos.org> * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once -#include <AK/RefCounted.h> -#include <LibWeb/Bindings/Wrappable.h> -#include <LibWeb/DOM/EventTarget.h> +#include <LibWeb/Bindings/PlatformObject.h> #include <LibWeb/Forward.h> -#include <LibWeb/HTML/Window.h> namespace Web::HTML { // https://html.spec.whatwg.org/multipage/web-messaging.html#message-channels -class MessageChannel final - : public RefCounted<MessageChannel> - , public Bindings::Wrappable { -public: - using WrapperType = Bindings::MessageChannelWrapper; - - using RefCounted::ref; - using RefCounted::unref; - - static NonnullRefPtr<MessageChannel> create_with_global_object(HTML::Window& window) - { - return adopt_ref(*new MessageChannel(window)); - } +class MessageChannel final : public Bindings::PlatformObject { + WEB_PLATFORM_OBJECT(MessageChannel, Bindings::PlatformObject); +public: + static JS::NonnullGCPtr<MessageChannel> create_with_global_object(HTML::Window&); virtual ~MessageChannel() override; MessagePort* port1(); @@ -40,8 +28,12 @@ public: private: explicit MessageChannel(HTML::Window&); - JS::Handle<MessagePort> m_port1; - JS::Handle<MessagePort> m_port2; + virtual void visit_edges(Cell::Visitor&) override; + + JS::GCPtr<MessagePort> m_port1; + JS::GCPtr<MessagePort> m_port2; }; } + +WRAPPER_HACK(MessageChannel, Web::HTML) |