Просмотр исходного кода

LibWeb: Allow removing DocumentObserver hooks

Some callers (namely WebDriver) will want to stop receiving updates from
the DocumentObserver.
Timothy Flynn 8 месяцев назад
Родитель
Сommit
247307a2a2
1 измененных файлов с 12 добавлено и 3 удалено
  1. 12 3
      Userland/Libraries/LibWeb/DOM/DocumentObserver.cpp

+ 12 - 3
Userland/Libraries/LibWeb/DOM/DocumentObserver.cpp

@@ -36,17 +36,26 @@ void DocumentObserver::finalize()
 
 void DocumentObserver::set_document_became_inactive(Function<void()> 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<void()> 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<void(HTML::DocumentReadyState)> 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;
 }
 
 }