1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-01 03:02:07 +00:00

LibWeb: Let HTML::EventLoop keep track of live DOM::Document objects

This will be used by the event loop processing model.
This commit is contained in:
Andreas Kling 2021-10-03 16:07:21 +02:00
parent 6f0d7245d7
commit ae71e5f99b
3 changed files with 36 additions and 0 deletions

View file

@ -8,6 +8,7 @@
#include <LibCore/Timer.h>
#include <LibJS/Runtime/VM.h>
#include <LibWeb/Bindings/MainThreadVM.h>
#include <LibWeb/DOM/Document.h>
#include <LibWeb/HTML/EventLoop/EventLoop.h>
namespace Web::HTML {
@ -242,4 +243,25 @@ void EventLoop::perform_a_microtask_checkpoint()
m_performing_a_microtask_checkpoint = false;
}
NonnullRefPtrVector<DOM::Document> EventLoop::documents_in_this_event_loop() const
{
NonnullRefPtrVector<DOM::Document> documents;
for (auto& document : m_documents) {
VERIFY(document);
documents.append(*document);
}
return documents;
}
void EventLoop::register_document(Badge<DOM::Document>, DOM::Document& document)
{
m_documents.append(&document);
}
void EventLoop::unregister_document(Badge<DOM::Document>, DOM::Document& document)
{
bool did_remove = m_documents.remove_first_matching([&](auto& entry) { return entry.ptr() == &document; });
VERIFY(did_remove);
}
}