/* * Copyright (c) 2025, Tim Flynn * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace Web::HTML { #define ENUMERATE_SHARED_WORKER_GLOBAL_SCOPE_EVENT_HANDLERS(E) \ E(onconnect, HTML::EventNames::connect) class SharedWorkerGlobalScope : public WorkerGlobalScope , public Bindings::SharedWorkerGlobalScopeGlobalMixin { WEB_PLATFORM_OBJECT(SharedWorkerGlobalScope, WorkerGlobalScope); GC_DECLARE_ALLOCATOR(SharedWorkerGlobalScope); public: virtual ~SharedWorkerGlobalScope() override; String const& name() const { return m_name; } void close(); #define __ENUMERATE(attribute_name, event_name) \ void set_##attribute_name(WebIDL::CallbackType*); \ WebIDL::CallbackType* attribute_name(); ENUMERATE_SHARED_WORKER_GLOBAL_SCOPE_EVENT_HANDLERS(__ENUMERATE) #undef __ENUMERATE private: SharedWorkerGlobalScope(JS::Realm&, GC::Ref, String name); virtual void initialize_web_interfaces_impl() override; virtual void finalize() override; String m_name; }; HashTable>& all_shared_worker_global_scopes(); }