From 247307a2a28e92b20a57d127eed73a093dd4e3d3 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Fri, 25 Oct 2024 10:22:27 -0400 Subject: [PATCH] LibWeb: Allow removing DocumentObserver hooks Some callers (namely WebDriver) will want to stop receiving updates from the DocumentObserver. --- .../Libraries/LibWeb/DOM/DocumentObserver.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/Userland/Libraries/LibWeb/DOM/DocumentObserver.cpp b/Userland/Libraries/LibWeb/DOM/DocumentObserver.cpp index b941c4ace06..335bd15fe38 100644 --- a/Userland/Libraries/LibWeb/DOM/DocumentObserver.cpp +++ b/Userland/Libraries/LibWeb/DOM/DocumentObserver.cpp @@ -36,17 +36,26 @@ void DocumentObserver::finalize() void DocumentObserver::set_document_became_inactive(Function callback) { - m_document_became_inactive = JS::create_heap_function(vm().heap(), move(callback)); + if (callback) + m_document_became_inactive = JS::create_heap_function(vm().heap(), move(callback)); + else + m_document_became_inactive = nullptr; } void DocumentObserver::set_document_completely_loaded(Function callback) { - m_document_completely_loaded = JS::create_heap_function(vm().heap(), move(callback)); + if (callback) + m_document_completely_loaded = JS::create_heap_function(vm().heap(), move(callback)); + else + m_document_completely_loaded = nullptr; } void DocumentObserver::set_document_readiness_observer(Function callback) { - m_document_readiness_observer = JS::create_heap_function(vm().heap(), move(callback)); + if (callback) + m_document_readiness_observer = JS::create_heap_function(vm().heap(), move(callback)); + else + m_document_readiness_observer = nullptr; } }