LibWeb: Use reject_the_finished_promise() in abort_a_navigate_event()

This aligns our implementation with the specification. Doing this
fixes a number of WPT tests because this sets
`m_ongoing_api_method_tracker` to null, avoiding an assertion that
previously caused a crash.
This commit is contained in:
Tim Ledbetter
2026-02-10 20:04:10 +00:00
committed by Shannon Booth
parent 206a18acd4
commit dc649a7e46
Notes: github-actions[bot] 2026-02-14 19:23:21 +00:00
21 changed files with 413 additions and 2 deletions

View File

@@ -788,9 +788,10 @@ void Navigation::abort_a_navigate_event(GC::Ref<NavigateEvent> event, GC::Ref<We
// 4. Set navigation's ongoing navigate event to null.
m_ongoing_navigate_event = nullptr;
// 5. If navigation's ongoing API method tracker is non-null, then reject the finished promise for apiMethodTracker with reason.
// 5. If navigation's ongoing API method tracker is non-null, then reject the finished promise for apiMethodTracker
// with reason.
if (m_ongoing_api_method_tracker)
WebIDL::reject_promise(realm(), m_ongoing_api_method_tracker->finished_promise, reason);
reject_the_finished_promise(*m_ongoing_api_method_tracker, reason);
// 6. Fire an event named navigateerror at navigation using ErrorEvent, with additional attributes initialized
// according to errorInfo.