DocumentObserver.cpp 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /*
  2. * Copyright (c) 2023, Tim Flynn <trflynn89@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <LibJS/Runtime/Realm.h>
  7. #include <LibWeb/DOM/Document.h>
  8. #include <LibWeb/DOM/DocumentObserver.h>
  9. namespace Web::DOM {
  10. DocumentObserver::DocumentObserver(JS::Realm& realm, DOM::Document& document)
  11. : Bindings::PlatformObject(realm)
  12. , m_document(document)
  13. {
  14. m_document->register_document_observer({}, *this);
  15. }
  16. void DocumentObserver::visit_edges(Cell::Visitor& visitor)
  17. {
  18. Base::visit_edges(visitor);
  19. visitor.visit(m_document);
  20. visitor.visit(m_document_became_inactive);
  21. visitor.visit(m_document_completely_loaded);
  22. }
  23. void DocumentObserver::finalize()
  24. {
  25. Base::finalize();
  26. m_document->unregister_document_observer({}, *this);
  27. }
  28. void DocumentObserver::set_document_became_inactive(Function<void()> callback)
  29. {
  30. m_document_became_inactive = JS::create_heap_function(vm().heap(), move(callback));
  31. }
  32. void DocumentObserver::set_document_completely_loaded(Function<void()> callback)
  33. {
  34. m_document_completely_loaded = JS::create_heap_function(vm().heap(), move(callback));
  35. }
  36. }