diff --git a/Userland/Libraries/LibWeb/HTML/ServiceWorkerContainer.cpp b/Userland/Libraries/LibWeb/HTML/ServiceWorkerContainer.cpp
index 1f8d6b56a1c..7d69059aad7 100644
--- a/Userland/Libraries/LibWeb/HTML/ServiceWorkerContainer.cpp
+++ b/Userland/Libraries/LibWeb/HTML/ServiceWorkerContainer.cpp
@@ -17,15 +17,24 @@ JS_DEFINE_ALLOCATOR(ServiceWorkerContainer);
ServiceWorkerContainer::ServiceWorkerContainer(JS::Realm& realm)
: DOM::EventTarget(realm)
+ , m_service_worker_client(relevant_settings_object(*this))
{
}
+ServiceWorkerContainer::~ServiceWorkerContainer() = default;
+
void ServiceWorkerContainer::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(ServiceWorkerContainer);
}
+void ServiceWorkerContainer::visit_edges(Cell::Visitor& visitor)
+{
+ Base::visit_edges(visitor);
+ visitor.visit(m_service_worker_client);
+}
+
JS::NonnullGCPtr ServiceWorkerContainer::create(JS::Realm& realm)
{
return realm.heap().allocate(realm, realm);
diff --git a/Userland/Libraries/LibWeb/HTML/ServiceWorkerContainer.h b/Userland/Libraries/LibWeb/HTML/ServiceWorkerContainer.h
index eeb289b4bc8..9576ac013be 100644
--- a/Userland/Libraries/LibWeb/HTML/ServiceWorkerContainer.h
+++ b/Userland/Libraries/LibWeb/HTML/ServiceWorkerContainer.h
@@ -22,7 +22,7 @@ class ServiceWorkerContainer : public DOM::EventTarget {
public:
[[nodiscard]] static JS::NonnullGCPtr create(JS::Realm& realm);
- virtual ~ServiceWorkerContainer() override = default;
+ virtual ~ServiceWorkerContainer() override;
#undef __ENUMERATE
#define __ENUMERATE(attribute_name, event_name) \
@@ -35,6 +35,9 @@ private:
explicit ServiceWorkerContainer(JS::Realm&);
virtual void initialize(JS::Realm&) override;
+ virtual void visit_edges(Cell::Visitor&) override;
+
+ JS::NonnullGCPtr m_service_worker_client;
};
}