From 7ea7352bf37f197e96d42a7c89a3cd4addff0384 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 23 Nov 2024 10:52:36 +0100 Subject: [PATCH] LibWeb: Bail on applying the history step when no active window This is an ad-hoc hack papering over the fact that we can apparently end up in these places without an active window, and proceeding without one leads to assertions on WPT. --- Libraries/LibWeb/HTML/TraversableNavigable.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Libraries/LibWeb/HTML/TraversableNavigable.cpp b/Libraries/LibWeb/HTML/TraversableNavigable.cpp index bd3e2cb4e97..3ea734cf031 100644 --- a/Libraries/LibWeb/HTML/TraversableNavigable.cpp +++ b/Libraries/LibWeb/HTML/TraversableNavigable.cpp @@ -815,15 +815,17 @@ TraversableNavigable::HistoryStepResult TraversableNavigable::apply_the_history_ // 18. For each navigable of nonchangingNavigablesThatStillNeedUpdates, queue a global task on the navigation and traversal task source given navigable's active window to run the steps: for (auto& navigable : non_changing_navigables_that_still_need_updates) { - if (navigable->has_been_destroyed()) { + // AD-HOC: This check is not in the spec but we should not continue navigation if navigable has been destroyed, + // or if there's no active window. + if (navigable->has_been_destroyed() || !navigable->active_window()) { ++completed_non_changing_jobs; continue; } - VERIFY(navigable->active_window()); queue_global_task(Task::Source::NavigationAndTraversal, *navigable->active_window(), GC::create_function(heap(), [&] { - // NOTE: This check is not in the spec but we should not continue navigation if navigable has been destroyed. - if (navigable->has_been_destroyed()) { + // AD-HOC: This check is not in the spec but we should not continue navigation if navigable has been destroyed, + // or if there's no active window. + if (navigable->has_been_destroyed() || !navigable->active_window()) { ++completed_non_changing_jobs; return; }