Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: b05914464158fcb242b61edb1c2a547be7a0532c https://github.com/WebKit/WebKit/commit/b05914464158fcb242b61edb1c2a547be7a0532c Author: Basuke Suzuki <bas...@apple.com> Date: 2025-08-15 (Fri, 15 Aug 2025)
Changed paths: M LayoutTests/TestExpectations M LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-activation/activation-after-bfcache-cross-origin-expected.txt M LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-activation/activation-after-bfcache-cross-origin.html M LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-activation/activation-after-bfcache-expected.txt M LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-activation/activation-after-bfcache.html M Source/WebCore/history/CachedPage.cpp M Source/WebCore/loader/FrameLoader.cpp M Source/WebCore/loader/FrameLoader.h M Source/WebCore/page/Navigation.cpp M Source/WebCore/page/Navigation.h Log Message: ----------- [Navigation API] Fix BFCache navigate event timing and activation issues. https://bugs.webkit.org/show_bug.cgi?id=297356 rdar://158248416 Reviewed by Alex Christensen. This commit addresses two Navigation API issues with Back-Forward Cache operations: 1. Navigation API activation object was not being properly created when pages were restored from the back-forward cache, causing: - navigation.activation.navigationType was "push" instead of "traverse". - navigation.activation.from was missing/null for same-origin navigations. 2. Navigate events were firing before BFCache page restoration completed, causing: event handlers to miss navigate events during traversals to BFCache pages. The fixes include: - Add updateForActivation() calls during BFCache restoration in CachedPage::restore() to create activation objects with correct traverse navigation type and relationships. - Defer navigate event dispatch for BFCache traversals until after page restoration. - Add dispatchPendingNavigateEventForBFCache() to fire events at correct timing. - Simplify code by using m_pendingNavigationAPIItem as sole state indicator. - Hide setActivation (renamed from updateForActivation) in updateForReactivation. The cross-origin security logic ensures navigation.activation.from is null for cross-origin navigations as expected. * LayoutTests/TestExpectations: * LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-activation/activation-after-bfcache-cross-origin-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-activation/activation-after-bfcache-cross-origin.html: * LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-activation/activation-after-bfcache-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-activation/activation-after-bfcache.html: * Source/WebCore/history/CachedPage.cpp: (WebCore::CachedPage::restore): * Source/WebCore/loader/FrameLoader.cpp: (WebCore::FrameLoader::commitProvisionalLoad): (WebCore::FrameLoader::continueLoadAfterNavigationPolicy): (WebCore::FrameLoader::loadItem): * Source/WebCore/loader/FrameLoader.h: * Source/WebCore/page/Navigation.cpp: (WebCore::Navigation::initializeForNewWindow): (WebCore::Navigation::setActivation): (WebCore::Navigation::updateForReactivation): (WebCore::Navigation::updateForActivation): Renamed to setActivation. * Source/WebCore/page/Navigation.h: Canonical link: https://commits.webkit.org/298765@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes