/* * Copyright (c) 2024, Andrew Kaster * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #define ENUMERATE_DEDICATED_WORKER_GLOBAL_SCOPE_EVENT_HANDLERS(E) \ E(onmessage, HTML::EventNames::message) \ E(onmessageerror, HTML::EventNames::messageerror) namespace Web::HTML { class DedicatedWorkerGlobalScope : public WorkerGlobalScope , public Bindings::DedicatedWorkerGlobalScopeGlobalMixin { WEB_PLATFORM_OBJECT(DedicatedWorkerGlobalScope, WorkerGlobalScope); GC_DECLARE_ALLOCATOR(DedicatedWorkerGlobalScope); public: virtual ~DedicatedWorkerGlobalScope() override; WebIDL::ExceptionOr post_message(JS::Value message, StructuredSerializeOptions const&); WebIDL::ExceptionOr post_message(JS::Value message, Vector> const& transfer); void set_name(String name) { m_name = move(name); } String name() const { return m_name; } void close(); #undef __ENUMERATE #define __ENUMERATE(attribute_name, event_name) \ void set_##attribute_name(WebIDL::CallbackType*); \ WebIDL::CallbackType* attribute_name(); ENUMERATE_DEDICATED_WORKER_GLOBAL_SCOPE_EVENT_HANDLERS(__ENUMERATE) #undef __ENUMERATE virtual void finalize() override; private: DedicatedWorkerGlobalScope(JS::Realm&, GC::Ref); virtual void initialize_web_interfaces_impl() override; String m_name; }; }