/* * Copyright (c) 2022, Andrew Kaster * Copyright (c) 2024, Jamie Mansfield * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include #include #include #include namespace Web::HTML { class WorkerNavigator : public Bindings::PlatformObject , public NavigatorConcurrentHardwareMixin , public NavigatorDeviceMemoryMixin , public NavigatorIDMixin , public NavigatorLanguageMixin , public NavigatorOnLineMixin , public StorageAPI::NavigatorStorage { WEB_PLATFORM_OBJECT(WorkerNavigator, Bindings::PlatformObject); JS_DECLARE_ALLOCATOR(WorkerNavigator); public: [[nodiscard]] static JS::NonnullGCPtr create(WorkerGlobalScope&); JS::NonnullGCPtr service_worker(); virtual ~WorkerNavigator() override; JS::NonnullGCPtr media_capabilities(); private: explicit WorkerNavigator(WorkerGlobalScope&); virtual void initialize(JS::Realm&) override; virtual void visit_edges(Cell::Visitor&) override; // ^StorageAPI::NavigatorStorage virtual Bindings::PlatformObject const& this_navigator_storage_object() const override { return *this; } // https://w3c.github.io/media-capabilities/#dom-workernavigator-mediacapabilities JS::GCPtr m_media_capabilities; JS::GCPtr m_service_worker_container; }; }