Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 45434d689d024c7f54fbf5a316f2f7559af09f4b
https://github.com/WebKit/WebKit/commit/45434d689d024c7f54fbf5a316f2f7559af09f4b
Author: Rupin Mittal <[email protected]>
Date: 2026-08-12 (Wed, 12 Aug 2026)
Changed paths:
M LayoutTests/TestExpectations
M
LayoutTests/imported/w3c/web-platform-tests/html/dom/idlharness.https_exclude=(Document_Window_HTML._)-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/anchor-download-aborts-previous-navigation-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/navigate-intercept-precommitHandler-redirect_currententrychange-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/navigate-intercept-precommitHandler-redirect_no-currententrychange-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/navigate-intercept-precommitHandler-reject.tentative_currententrychange-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/navigate-intercept-precommitHandler-reject.tentative_no-currententrychange-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/navigate-intercept-precommitHandler_currententrychange-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/navigate-intercept-precommitHandler_no-currententrychange-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/multiple-intercept-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-addHandler-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-addHandler-throws-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-back-and-forth-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-new-navigation-before-commit-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-push-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-redirect-options-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-redirect-push-changed-to-replace-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-redirect-push-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-redirect-replace-changed-to-push-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-redirect-replace-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-redirect-throws-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-reload-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-replace-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-traversal-window-stop-before-commit-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-traverse-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-uncancelable-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-window-stop-before-commit-expected.txt
M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
M Source/WebCore/CMakeLists.txt
M Source/WebCore/DerivedSources.make
M Source/WebCore/Headers.cmake
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
A Source/WebCore/bindings/js/JSNavigationPrecommitControllerCustom.cpp
M Source/WebCore/bindings/js/WebCoreBuiltinNames.h
M Source/WebCore/loader/FrameLoadRequest.h
M Source/WebCore/loader/FrameLoader.h
M Source/WebCore/loader/FrameLoaderTypes.h
M Source/WebCore/loader/NavigationScheduler.h
M Source/WebCore/page/History.h
M Source/WebCore/page/NavigateEvent.cpp
M Source/WebCore/page/NavigateEvent.h
M Source/WebCore/page/NavigateEvent.idl
M Source/WebCore/page/Navigation.cpp
M Source/WebCore/page/Navigation.h
M Source/WebCore/page/Navigation.idl
M Source/WebCore/page/NavigationDestination.h
A Source/WebCore/page/NavigationHistoryBehavior.h
A Source/WebCore/page/NavigationHistoryBehavior.idl
A Source/WebCore/page/NavigationNavigateOptions.h
A Source/WebCore/page/NavigationNavigateOptions.idl
A Source/WebCore/page/NavigationOptions.h
A Source/WebCore/page/NavigationOptions.idl
A Source/WebCore/page/NavigationPrecommitController.cpp
A Source/WebCore/page/NavigationPrecommitController.h
A Source/WebCore/page/NavigationPrecommitController.idl
A Source/WebCore/page/NavigationPrecommitHandler.h
A Source/WebCore/page/NavigationPrecommitHandler.idl
A Source/WebCore/page/NavigationReloadOptions.h
A Source/WebCore/page/NavigationReloadOptions.idl
M Source/WebCore/page/NavigationTransition.cpp
M Source/WebCore/page/NavigationTransition.h
M Source/WebCore/page/NavigationTransition.idl
Log Message:
-----------
[Navigation API] Implement Precommit Handler
https://bugs.webkit.org/show_bug.cgi?id=321260
rdar://184311803
Reviewed by Basuke Suzuki.
This patch implements the Precommit Handler of the Navigation API according
to https://html.spec.whatwg.org/multipage/nav-history-apis.html#navigation-api.
This is guarded behind the new NavigationAPIPrecommitHandler feature flag
which is currently marked as "testable". There are still a few tests that
are not passing yet. Once those are fixed, we will enable the flag in stable.
* LayoutTests/TestExpectations:
*
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-addHandler-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-addHandler-throws-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-back-and-forth-expected.txt:
Added.
* Source/WebCore/CMakeLists.txt:
* Source/WebCore/DerivedSources.make:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/bindings/js/JSNavigationPrecommitControllerCustom.cpp: Added.
(WebCore::JSNavigationPrecommitController::visitAdditionalChildrenInGCThread):
* Source/WebCore/bindings/js/WebCoreBuiltinNames.h:
* Source/WebCore/page/NavigateEvent.cpp:
(WebCore::NavigateEvent::setInfo):
(WebCore::NavigateEvent::intercept):
* Source/WebCore/page/NavigateEvent.h:
* Source/WebCore/page/NavigateEvent.idl:
* Source/WebCore/page/Navigation.cpp:
(WebCore::Navigation::documentCanHaveURLRewritten):
(WebCore::Navigation::createTransitionForInterception):
(WebCore::Navigation::setupInterceptionState):
(WebCore::Navigation::runNavigatePrecommitHandlers):
(WebCore::Navigation::innerDispatchNavigateEvent):
(WebCore::documentCanHaveURLRewritten): Deleted.
(WebCore::Navigation::reload):
(WebCore::Navigation::navigate):
(WebCore::Navigation::performTraversal):
(WebCore::Navigation::traverseTo):
(WebCore::Navigation::back):
(WebCore::Navigation::forward):
* Source/WebCore/page/Navigation.h:
(WebCore::NavigationAPIMethodTracker::setSerializedState):
* Source/WebCore/page/NavigationDestination.h:
* Source/WebCore/page/NavigationPrecommitController.cpp: Added.
(WebCore::NavigationPrecommitController::NavigationPrecommitController):
(WebCore::NavigationPrecommitController::redirect):
(WebCore::NavigationPrecommitController::addHandler):
* Source/WebCore/page/NavigationPrecommitController.h: Added.
* Source/WebCore/page/NavigationPrecommitController.idl: Added.
* Source/WebCore/page/NavigationPrecommitHandler.h: Copied from
Source/WebCore/page/NavigationDestination.h.
(WebCore::NavigationPrecommitHandler::isJSNavigationPrecommitHandler const):
* Source/WebCore/page/NavigationPrecommitHandler.idl: Added.
*
LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/navigate-intercept-precommitHandler-redirect_currententrychange-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/navigate-intercept-precommitHandler-redirect_no-currententrychange-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/navigate-intercept-precommitHandler-reject.tentative_currententrychange-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/navigate-intercept-precommitHandler-reject.tentative_no-currententrychange-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/navigate-intercept-precommitHandler_currententrychange-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/navigate-intercept-precommitHandler_no-currententrychange-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/multiple-intercept-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-new-navigation-before-commit-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-push-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-redirect-options-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-redirect-push-changed-to-replace-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-redirect-push-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-redirect-replace-changed-to-push-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-redirect-replace-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-redirect-throws-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-reload-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-replace-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-traversal-window-stop-before-commit-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-traverse-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-uncancelable-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/navigation-api/precommit-handler/precommitHandler-window-stop-before-commit-expected.txt:
* Source/WebCore/loader/FrameLoaderTypes.h:
* Source/WebCore/page/Navigation.idl:
* Source/WebCore/page/NavigationHistoryBehavior.h: Added.
* Source/WebCore/page/NavigationHistoryBehavior.idl: Added.
* Source/WebCore/page/NavigationNavigateOptions.h: Added.
* Source/WebCore/page/NavigationNavigateOptions.idl: Added.
* Source/WebCore/page/NavigationOptions.h: Added.
* Source/WebCore/page/NavigationOptions.idl: Added.
* Source/WebCore/page/NavigationReloadOptions.h: Added.
* Source/WebCore/page/NavigationReloadOptions.idl: Added.
*
LayoutTests/imported/w3c/web-platform-tests/html/dom/idlharness.https_exclude=(Document_Window_HTML._)-expected.txt:
* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WebCore/Headers.cmake:
* Source/WebCore/loader/FrameLoadRequest.h:
* Source/WebCore/loader/FrameLoader.h:
* Source/WebCore/loader/NavigationScheduler.h:
* Source/WebCore/page/History.h:
* Source/WebCore/page/NavigationTransition.cpp:
(WebCore::NavigationTransition::create):
(WebCore::NavigationTransition::NavigationTransition):
(WebCore::NavigationTransition::resolveCommitted):
(WebCore::NavigationTransition::rejectPromise):
(WebCore::NavigationTransition::committed):
* Source/WebCore/page/NavigationTransition.h:
* Source/WebCore/page/NavigationTransition.idl:
*
LayoutTests/imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/anchor-download-aborts-previous-navigation-expected.txt:
Canonical link: https://commits.webkit.org/319084@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications