diff --git a/Userland/Libraries/LibWeb/DOM/Document.cpp b/Userland/Libraries/LibWeb/DOM/Document.cpp index 89a079290d..2e1338b71c 100644 --- a/Userland/Libraries/LibWeb/DOM/Document.cpp +++ b/Userland/Libraries/LibWeb/DOM/Document.cpp @@ -2256,4 +2256,9 @@ void Document::unload(bool recursive_flag, Optional un m_unload_counter -= 1; } +void Document::did_stop_being_active_document_in_browsing_context(Badge) +{ + tear_down_layout_tree(); +} + } diff --git a/Userland/Libraries/LibWeb/DOM/Document.h b/Userland/Libraries/LibWeb/DOM/Document.h index 0f3dc74644..c0b136b364 100644 --- a/Userland/Libraries/LibWeb/DOM/Document.h +++ b/Userland/Libraries/LibWeb/DOM/Document.h @@ -440,6 +440,8 @@ public: DocumentUnloadTimingInfo const& previous_document_unload_timing() const { return m_previous_document_unload_timing; } void set_previous_document_unload_timing(DocumentUnloadTimingInfo const& previous_document_unload_timing) { m_previous_document_unload_timing = previous_document_unload_timing; } + void did_stop_being_active_document_in_browsing_context(Badge); + protected: virtual void visit_edges(Cell::Visitor&) override; diff --git a/Userland/Libraries/LibWeb/HTML/BrowsingContext.cpp b/Userland/Libraries/LibWeb/HTML/BrowsingContext.cpp index a751f8e521..93b6ed21eb 100644 --- a/Userland/Libraries/LibWeb/HTML/BrowsingContext.cpp +++ b/Userland/Libraries/LibWeb/HTML/BrowsingContext.cpp @@ -295,6 +295,8 @@ bool BrowsingContext::is_focused_context() const // https://html.spec.whatwg.org/multipage/browsers.html#set-the-active-document void BrowsingContext::set_active_document(JS::NonnullGCPtr document) { + auto previously_active_document = active_document(); + // 1. Let window be document's relevant global object. auto& window = verify_cast(relevant_global_object(document)); @@ -315,6 +317,9 @@ void BrowsingContext::set_active_document(JS::NonnullGCPtr docume if (m_page && is_top_level()) m_page->client().page_did_change_title(document->title()); + + if (previously_active_document && previously_active_document != document.ptr()) + previously_active_document->did_stop_being_active_document_in_browsing_context({}); } void BrowsingContext::set_viewport_rect(Gfx::IntRect const& rect)