From d6d1485720206e3d865188945f1a4a99a61c5b1c Mon Sep 17 00:00:00 2001 From: Andrew Kaster Date: Fri, 3 Nov 2023 19:16:52 -0600 Subject: [PATCH] LibWeb: Bring destroy the child navigable comments closer to spec --- .../Libraries/LibWeb/HTML/NavigableContainer.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Userland/Libraries/LibWeb/HTML/NavigableContainer.cpp b/Userland/Libraries/LibWeb/HTML/NavigableContainer.cpp index 61f0d642b5..9dd02e363b 100644 --- a/Userland/Libraries/LibWeb/HTML/NavigableContainer.cpp +++ b/Userland/Libraries/LibWeb/HTML/NavigableContainer.cpp @@ -261,25 +261,27 @@ void NavigableContainer::destroy_the_child_navigable() // 3. Set container's content navigable to null. m_content_navigable = nullptr; - // 4. Destroy navigable's active document. + // FIXME: 4. Inform the navigation API about child navigable destruction given navigable. + + // 5. Destroy navigable's active document. navigable->active_document()->destroy(); - // 5. Let parentDocState be container's node navigable's active session history entry's document state. + // 6. Let parentDocState be container's node navigable's active session history entry's document state. auto parent_doc_state = this->navigable()->active_session_history_entry()->document_state; - // 6. Remove the nested history from parentDocState's nested histories whose id equals navigable's id. + // 7. Remove the nested history from parentDocState's nested histories whose id equals navigable's id. parent_doc_state->nested_histories().remove_all_matching([&](auto& nested_history) { return navigable->id() == nested_history.id; }); - // 7. Let traversable be container's node navigable's traversable navigable. + // 8. Let traversable be container's node navigable's traversable navigable. auto traversable = this->navigable()->traversable_navigable(); // Not in the spec navigable->set_has_been_destroyed(); HTML::all_navigables().remove(navigable); - // 8. Append the following session history traversal steps to traversable: + // 9. Append the following session history traversal steps to traversable: traversable->append_session_history_traversal_steps([traversable] { // 1. Apply pending history changes to traversable. traversable->update_for_navigable_creation_or_destruction();