1
0
Fork 0
mirror of https://github.com/LadybirdBrowser/ladybird.git synced 2025-06-11 18:20:43 +09:00

LibWeb: Use DocumentLoadEventDelayer to delay load event in Navigable

Use a delayer object that actually delays load event for child
navigables instead of boolean flag that does nothing.
This commit is contained in:
Aliaksandr Kalenik 2023-09-14 01:22:00 +02:00 committed by Andreas Kling
parent b398d6a35c
commit 6522fa8933
Notes: sideshowbarker 2024-07-17 05:58:46 +09:00
2 changed files with 14 additions and 3 deletions

View file

@ -90,6 +90,17 @@ void Navigable::visit_edges(Cell::Visitor& visitor)
visitor.visit(m_container);
}
void Navigable::set_delaying_load_events(bool value)
{
if (value) {
auto document = container_document();
VERIFY(document);
m_delaying_the_load_event.emplace(*document);
} else {
m_delaying_the_load_event.clear();
}
}
JS::GCPtr<Navigable> Navigable::navigable_with_active_document(JS::NonnullGCPtr<DOM::Document> document)
{
for (auto* navigable : all_navigables()) {

View file

@ -10,6 +10,7 @@
#include <AK/String.h>
#include <LibJS/Heap/Cell.h>
#include <LibWeb/Bindings/NavigationPrototype.h>
#include <LibWeb/DOM/DocumentLoadEventDelayer.h>
#include <LibWeb/Forward.h>
#include <LibWeb/HTML/ActivateTab.h>
#include <LibWeb/HTML/HistoryHandlingBehavior.h>
@ -56,8 +57,7 @@ public:
bool is_closing() const { return m_closing; }
void set_closing(bool value) { m_closing = value; }
bool is_delaying_load_events() const { return m_delaying_load_events; }
void set_delaying_load_events(bool value) { m_delaying_load_events = value; }
void set_delaying_load_events(bool value);
JS::GCPtr<SessionHistoryEntry> active_session_history_entry() const { return m_active_session_history_entry; }
void set_active_session_history_entry(JS::GCPtr<SessionHistoryEntry> entry) { m_active_session_history_entry = entry; }
@ -160,7 +160,7 @@ private:
bool m_closing { false };
// https://html.spec.whatwg.org/multipage/document-sequences.html#delaying-load-events-mode
bool m_delaying_load_events { false };
Optional<DOM::DocumentLoadEventDelayer> m_delaying_the_load_event;
// Implied link between navigable and its container.
JS::GCPtr<NavigableContainer> m_container;