diff --git a/Userland/Libraries/LibWeb/HTML/BrowsingContextContainer.cpp b/Userland/Libraries/LibWeb/HTML/BrowsingContextContainer.cpp index 8f54c03c2a..e4d8b533d7 100644 --- a/Userland/Libraries/LibWeb/HTML/BrowsingContextContainer.cpp +++ b/Userland/Libraries/LibWeb/HTML/BrowsingContextContainer.cpp @@ -31,11 +31,19 @@ void BrowsingContextContainer::inserted() if (auto* browsing_context = document().browsing_context()) { VERIFY(browsing_context->page()); m_nested_browsing_context = BrowsingContext::create_nested(*browsing_context->page(), *this); + browsing_context->append_child(*m_nested_browsing_context); m_nested_browsing_context->set_frame_nesting_levels(browsing_context->frame_nesting_levels()); m_nested_browsing_context->register_frame_nesting(document().url()); } } +void BrowsingContextContainer::removed_from(Node* old_parent) +{ + HTMLElement::removed_from(old_parent); + if (m_nested_browsing_context && m_nested_browsing_context->parent()) + m_nested_browsing_context->parent()->remove_child(*m_nested_browsing_context); +} + // https://html.spec.whatwg.org/multipage/browsers.html#concept-bcc-content-document const DOM::Document* BrowsingContextContainer::content_document() const { diff --git a/Userland/Libraries/LibWeb/HTML/BrowsingContextContainer.h b/Userland/Libraries/LibWeb/HTML/BrowsingContextContainer.h index 968b2e6da2..9b49ba952e 100644 --- a/Userland/Libraries/LibWeb/HTML/BrowsingContextContainer.h +++ b/Userland/Libraries/LibWeb/HTML/BrowsingContextContainer.h @@ -22,6 +22,7 @@ public: DOM::Document const* content_document_without_origin_check() const; virtual void inserted() override; + virtual void removed_from(Node*) override; protected: RefPtr m_nested_browsing_context;