From 874e094ed8075368db84d7bb85611adcd9d18e6f Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Thu, 22 May 2025 12:15:04 -0400 Subject: [PATCH] LibWeb: Allow moving document load event delayers This allows us to store lists of delayers. --- .../LibWeb/DOM/DocumentLoadEventDelayer.cpp | 17 ++++++++++++++++- Libraries/LibWeb/DOM/DocumentLoadEventDelayer.h | 5 ++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/Libraries/LibWeb/DOM/DocumentLoadEventDelayer.cpp b/Libraries/LibWeb/DOM/DocumentLoadEventDelayer.cpp index 754a10031f8..bcfc277850f 100644 --- a/Libraries/LibWeb/DOM/DocumentLoadEventDelayer.cpp +++ b/Libraries/LibWeb/DOM/DocumentLoadEventDelayer.cpp @@ -15,9 +15,24 @@ DocumentLoadEventDelayer::DocumentLoadEventDelayer(Document& document) m_document->increment_number_of_things_delaying_the_load_event({}); } +DocumentLoadEventDelayer::DocumentLoadEventDelayer(DocumentLoadEventDelayer&& delayer) + : m_document(move(delayer.m_document)) +{ + delayer.m_document = nullptr; +} + +DocumentLoadEventDelayer& DocumentLoadEventDelayer::operator=(DocumentLoadEventDelayer&& delayer) +{ + m_document = move(delayer.m_document); + delayer.m_document = nullptr; + + return *this; +} + DocumentLoadEventDelayer::~DocumentLoadEventDelayer() { - m_document->decrement_number_of_things_delaying_the_load_event({}); + if (m_document) + m_document->decrement_number_of_things_delaying_the_load_event({}); } } diff --git a/Libraries/LibWeb/DOM/DocumentLoadEventDelayer.h b/Libraries/LibWeb/DOM/DocumentLoadEventDelayer.h index 33c2bfe8221..be228483755 100644 --- a/Libraries/LibWeb/DOM/DocumentLoadEventDelayer.h +++ b/Libraries/LibWeb/DOM/DocumentLoadEventDelayer.h @@ -13,11 +13,14 @@ namespace Web::DOM { class DocumentLoadEventDelayer { - AK_MAKE_NONMOVABLE(DocumentLoadEventDelayer); AK_MAKE_NONCOPYABLE(DocumentLoadEventDelayer); public: explicit DocumentLoadEventDelayer(Document&); + + DocumentLoadEventDelayer(DocumentLoadEventDelayer&&); + DocumentLoadEventDelayer& operator=(DocumentLoadEventDelayer&&); + ~DocumentLoadEventDelayer(); private: