LibWeb: Add WorkerNavigator.serviceWorker API

This simply adds a ServiceWorkerContainer object to the WorkerNavigator.
This commit is contained in:
Andrew Kaster 2024-09-04 14:17:03 -06:00 committed by Andreas Kling
commit 2667726b74
Notes: github-actions[bot] 2024-09-07 09:40:15 +00:00
3 changed files with 16 additions and 0 deletions

View file

@ -37,6 +37,7 @@ void WorkerNavigator::visit_edges(Cell::Visitor& visitor)
{
Base::visit_edges(visitor);
visitor.visit(m_media_capabilities);
visitor.visit(m_service_worker_container);
}
JS::NonnullGCPtr<MediaCapabilitiesAPI::MediaCapabilities> WorkerNavigator::media_capabilities()
@ -46,4 +47,11 @@ JS::NonnullGCPtr<MediaCapabilitiesAPI::MediaCapabilities> WorkerNavigator::media
return *m_media_capabilities;
}
JS::NonnullGCPtr<ServiceWorkerContainer> WorkerNavigator::service_worker()
{
if (!m_service_worker_container)
m_service_worker_container = heap().allocate<ServiceWorkerContainer>(realm(), realm());
return *m_service_worker_container;
}
}

View file

@ -12,6 +12,7 @@
#include <LibWeb/HTML/NavigatorID.h>
#include <LibWeb/HTML/NavigatorLanguage.h>
#include <LibWeb/HTML/NavigatorOnLine.h>
#include <LibWeb/HTML/ServiceWorkerContainer.h>
#include <LibWeb/MediaCapabilitiesAPI/MediaCapabilities.h>
#include <LibWeb/StorageAPI/NavigatorStorage.h>
@ -29,6 +30,8 @@ class WorkerNavigator : public Bindings::PlatformObject
public:
[[nodiscard]] static JS::NonnullGCPtr<WorkerNavigator> create(WorkerGlobalScope&);
JS::NonnullGCPtr<ServiceWorkerContainer> service_worker();
virtual ~WorkerNavigator() override;
JS::NonnullGCPtr<MediaCapabilitiesAPI::MediaCapabilities> media_capabilities();
@ -44,6 +47,8 @@ private:
// https://w3c.github.io/media-capabilities/#dom-workernavigator-mediacapabilities
JS::GCPtr<MediaCapabilitiesAPI::MediaCapabilities> m_media_capabilities;
JS::GCPtr<ServiceWorkerContainer> m_service_worker_container;
};
}

View file

@ -10,6 +10,9 @@
interface WorkerNavigator {
// https://w3c.github.io/media-capabilities/#dom-workernavigator-mediacapabilities
[SameObject] readonly attribute MediaCapabilities mediaCapabilities;
// https://w3c.github.io/ServiceWorker/#navigator-serviceworker
[SecureContext, SameObject] readonly attribute ServiceWorkerContainer serviceWorker;
};
WorkerNavigator includes NavigatorID;