Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: bc9c8e1b2b040e22120eb400c15def5ac28be6aa
https://github.com/WebKit/WebKit/commit/bc9c8e1b2b040e22120eb400c15def5ac28be6aa
Author: Alex Christensen <[email protected]>
Date: 2026-09-25 (Fri, 25 Sep 2026)
Changed paths:
M Source/WebKit/Shared/FrameInfoData.cpp
M Source/WebKit/Shared/FrameInfoData.h
M Source/WebKit/Shared/FrameInfoData.serialization.in
M Source/WebKit/UIProcess/API/APIFrameInfo.cpp
M Source/WebKit/UIProcess/API/APIFrameInfo.h
M Source/WebKit/UIProcess/Automation/BidiBrowsingContextAgent.cpp
M Source/WebKit/UIProcess/ProvisionalPageProxy.cpp
M Source/WebKit/UIProcess/WebFrameProxy.cpp
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
M Source/WebKit/WebProcess/WebPage/WebFrame.cpp
M Source/WebKit/WebProcess/WebPage/WebPage.cpp
M
Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm
Log Message:
-----------
Stop sending parent frame identifier over IPC with FrameInfoData
https://bugs.webkit.org/show_bug.cgi?id=324394
rdar://187625604
Reviewed by Ben Nham.
This continues removing pieces from FrameInfoData and using UI process
state instead, which I began in 321220@main. WKFrameInfo is supposed
to be a snapshot of what the frame was when it was created, so I made
the title follow that pattern too.
Also, I removed a hack to omit the frames from b/f cached frames in
WebFrameProxy::getFrameTree and did it the proper way by moving the
frames to the b/f item in WebPageProxy::didCacheBackForwardItem and
preparing for them to come back in
WebPageProxy::didTakeBackForwardItemForRestoration.
An alternative to this could've been to co_return std::nullopt in
WebFrame::getFrameInfo if !isMainFrame() && !parentFrame(), but that
would preserve the hacky UI process having the wrong
state.
This is covered by SiteIsolation.QueryFramesStateAfterNavigating
added with the original hack, which I modified to also test with site
isolation turned off.
Test: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm
* Source/WebKit/Shared/FrameInfoData.cpp:
(WebKit::legacyEmptyFrameInfo):
* Source/WebKit/Shared/FrameInfoData.h:
* Source/WebKit/Shared/FrameInfoData.serialization.in:
* Source/WebKit/UIProcess/API/APIFrameInfo.cpp:
(API::FrameInfo::stateSnapshot):
(API::FrameInfo::FrameInfo):
(API::FrameInfo::parentFrameHandle const):
(API::FrameInfo::title const):
(API::certificateInfoFromFrameID): Deleted.
* Source/WebKit/UIProcess/API/APIFrameInfo.h:
* Source/WebKit/UIProcess/ProvisionalPageProxy.cpp:
(WebKit::ProvisionalPageProxy::cancel):
* Source/WebKit/UIProcess/WebFrameProxy.cpp:
(WebKit::WebFrameProxy::getFrameTree):
*
Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didPerformImmediateActionHitTest):
(WebKit::WebPageProxy::didCacheBackForwardItem):
(WebKit::WebPageProxy::didTakeBackForwardItemForRestoration):
* Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::navigationActionData const):
* Source/WebKit/WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::info const):
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::getFrameTreeForBackForwardCacheEntry):
* Source/WebKit/UIProcess/Automation/BidiBrowsingContextAgent.cpp:
(WebKit::BidiBrowsingContextAgent::getNavigableInfo):
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/SiteIsolation.mm:
(TestWebKitAPI::TEST(SiteIsolation, QueryFramesStateAfterNavigating)):
(TestWebKitAPI::TEST(SiteIsolation,
QueryFramesStateAfterGoingBackToCachedPageWithIframe)):
Canonical link:
https://flagged.apple.com:443/proxy?t2=DB1O9v8Vn4&o=aHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvMzIxOTE4QG1haW4=&emid=815e9361-b22c-4b06-be44-70ec0d99f523&c=11
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications