Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 221e657b4111aac908f10f176e4889f3766724a2
https://github.com/WebKit/WebKit/commit/221e657b4111aac908f10f176e4889f3766724a2
Author: Zak Ridouh <[email protected]>
Date: 2026-07-17 (Fri, 17 Jul 2026)
Changed paths:
M LayoutTests/platform/ios-site-isolation/TestExpectations
M LayoutTests/platform/mac-site-isolation/TestExpectations
M Source/WebCore/loader/FrameLoader.cpp
M Source/WebCore/page/RemoteFrame.cpp
M Source/WebCore/page/RemoteFrameClient.h
M Source/WebKit/WebProcess/WebCoreSupport/WebRemoteFrameClient.cpp
M Source/WebKit/WebProcess/WebCoreSupport/WebRemoteFrameClient.h
Log Message:
-----------
[Site Isolation] Preserve Private Click Measurement across cross-process
top-frame navigations
https://bugs.webkit.org/show_bug.cgi?id=317781
rdar://180548257
Reviewed by Alex Christensen.
When an <a target="_top"> link with attribution attributes is clicked
inside a cross-origin iframe, the main frame lives in another process
and is a RemoteFrame. FrameLoader::loadURL parsed the Private Click
Measurement correctly but then handed the load to the RemoteFrameClient,
which never received the data: WebRemoteFrameClient::changeLocation built
a NavigationAction without it and nothing was stored. The local-frame
path attaches the data at the main frame (FrameLoader::loadURL's
frame->isMainFrame() check), but that path is never reached when the
target frame is remote.
Add an explicit Private Click Measurement parameter to
RemoteFrameClient::changeLocation and pass it from loadURL's RemoteFrame
branch (gated on isMainFrame() to match the local path) so
WebRemoteFrameClient::changeLocation can re-attach it to the
NavigationAction sent to the UI process. The UI-process storage path was
already measurement-aware, so no changes were needed there.
* LayoutTests/platform/ios-site-isolation/TestExpectations:
* LayoutTests/platform/mac-site-isolation/TestExpectations:
* Source/WebCore/loader/FrameLoader.cpp:
(WebCore::FrameLoader::loadURL):
* Source/WebKit/WebProcess/WebCoreSupport/WebRemoteFrameClient.cpp:
(WebKit::WebRemoteFrameClient::changeLocation):
* Source/WebCore/page/RemoteFrame.cpp:
(WebCore::RemoteFrame::changeLocation):
(WebCore::RemoteFrame::loadFrameRequest):
* Source/WebCore/page/RemoteFrameClient.h:
* Source/WebKit/WebProcess/WebCoreSupport/WebRemoteFrameClient.h:
Canonical link: https://commits.webkit.org/317409@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications