/* * Copyright (c) 2022, Andreas Kling * Copyright (c) 2024, Jamie Mansfield * * SPDX-License-Identifier: BSD-2-Clause */ #include #include #include #include #include namespace Web::HTML { GC_DEFINE_ALLOCATOR(WorkerNavigator); GC::Ref WorkerNavigator::create(WorkerGlobalScope& global_scope) { return global_scope.realm().create(global_scope); } WorkerNavigator::WorkerNavigator(WorkerGlobalScope& global_scope) : PlatformObject(global_scope.realm()) { } WorkerNavigator::~WorkerNavigator() = default; void WorkerNavigator::initialize(JS::Realm& realm) { Base::initialize(realm); WEB_SET_PROTOTYPE_FOR_INTERFACE(WorkerNavigator); } void WorkerNavigator::visit_edges(Cell::Visitor& visitor) { Base::visit_edges(visitor); visitor.visit(m_media_capabilities); visitor.visit(m_service_worker_container); } GC::Ref WorkerNavigator::media_capabilities() { if (!m_media_capabilities) m_media_capabilities = realm().create(realm()); return *m_media_capabilities; } GC::Ref WorkerNavigator::service_worker() { if (!m_service_worker_container) m_service_worker_container = realm().create(realm()); return *m_service_worker_container; } }