| 
									
										
										
										
											2025-05-02 12:06:41 -04:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * Copyright (c) 2025, Tim Flynn <trflynn89@ladybird.org> | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * SPDX-License-Identifier: BSD-2-Clause | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <AK/HashTable.h>
 | 
					
						
							|  |  |  | #include <LibJS/Forward.h>
 | 
					
						
							|  |  |  | #include <LibWeb/Bindings/SharedWorkerGlobalScopeGlobalMixin.h>
 | 
					
						
							|  |  |  | #include <LibWeb/HTML/WorkerGlobalScope.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     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: | 
					
						
							| 
									
										
										
										
											2025-05-18 14:04:29 -06:00
										 |  |  |     SharedWorkerGlobalScope(JS::Realm&, GC::Ref<Web::Page>); | 
					
						
							| 
									
										
										
										
											2025-05-02 12:06:41 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     virtual void initialize_web_interfaces_impl() override; | 
					
						
							|  |  |  |     virtual void finalize() override; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HashTable<GC::RawRef<SharedWorkerGlobalScope>>& all_shared_worker_global_scopes(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |