Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 67cb13c4df5cbac2152e63ee51bf4854a9c3a316
https://github.com/WebKit/WebKit/commit/67cb13c4df5cbac2152e63ee51bf4854a9c3a316
Author: Charlie Wolfe <[email protected]>
Date: 2026-09-10 (Thu, 10 Sep 2026)
Changed paths:
M LayoutTests/ipc/forged-resource-load-statistics-storage-access.html
M LayoutTests/platform/mac-site-isolation/TestExpectations
M Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp
M Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.h
M Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp
M Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h
M Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp
M Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h
M Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in
M Source/WebKit/NetworkProcess/NetworkProcess.cpp
M Source/WebKit/NetworkProcess/NetworkProcess.h
M Source/WebKit/NetworkProcess/NetworkProcess.messages.in
M Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp
M Source/WebKit/NetworkProcess/NetworkResourceLoader.h
M Source/WebKit/NetworkProcess/NetworkSession.h
M Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm
M Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm
M Source/WebKit/NetworkProcess/cocoa/NetworkStorageSessionCocoa.mm
M Source/WebKit/NetworkProcess/cocoa/NetworkTaskCocoa.mm
M Source/WebKit/NetworkProcess/cocoa/WebSocketTaskCocoa.mm
M Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp
M Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.h
M Source/WebKit/NetworkProcess/curl/NetworkStorageSessionCurl.cpp
M Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp
M Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.h
M Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp
M Source/WebKit/NetworkProcess/soup/NetworkStorageSessionSoup.cpp
M Source/WebKit/Shared/NetworkStorageSession.cpp
M Source/WebKit/Shared/NetworkStorageSession.h
M Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp
M Source/WebKit/UIProcess/Network/NetworkProcessProxy.h
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp
M Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.h
M Source/WebKit/WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp
M Source/WebKit/WebProcess/WebPage/WebCookieCache.cpp
M Source/WebKit/WebProcess/WebPage/WebCookieCache.h
M Source/WebKit/WebProcess/WebPage/WebCookieJar.cpp
M Source/WebKit/WebProcess/WebPage/WebCookieJar.h
M Source/WebKit/WebProcess/WebPage/WebPage.cpp
Log Message:
-----------
Network process page-level state should be keyed by WebPageProxyIdentifier,
not PageIdentifier
https://bugs.webkit.org/show_bug.cgi?id=323836
rdar://187072163
Reviewed by Alex Christensen.
Network process state like NetworkStorageSession::m_pagesGrantedStorageAccess
keeps track of
page-level access keyed by PageIdentifier. PageIdentifier cannot be used to
identify tab-level pages
with site isolation, since one page may have several Page objects. Instead, we
can use
WebPageProxyIdentifier, which is per WKWebView.
WebPageProxyIdentifier outlives the per-process WebPage, so the teardown that
ClearPageSpecificData
used to provide implicitly has to become explicit. Add a new IPC to the network
process,
DidCommitMainFrameNavigation, to do this: it drops the page-level grant for the
committed top-frame
domain on a cross-site main-frame navigation, and expires the link-decoration
cookie cap once the
page navigates off the decorated domain. Clearing for the page's own
destruction moves to
NetworkProcess::removeWebPageNetworkParameters.
pageID is now redundant in the cookie and storage-access messages that already
carry webPageProxyID,
so drop it.
* LayoutTests/ipc/forged-resource-load-statistics-storage-access.html:
* LayoutTests/platform/mac-site-isolation/TestExpectations:
* Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:
(WebKit::ResourceLoadStatisticsStore::hasStorageAccess):
(WebKit::ResourceLoadStatisticsStore::requestStorageAccess):
(WebKit::ResourceLoadStatisticsStore::requestStorageAccessUnderOpener):
(WebKit::ResourceLoadStatisticsStore::grantStorageAccess):
(WebKit::ResourceLoadStatisticsStore::grantStorageAccessInternal):
* Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
* Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::hasStorageAccess):
(WebKit::WebResourceLoadStatisticsStore::hasStorageAccessEphemeral):
(WebKit::WebResourceLoadStatisticsStore::hasStorageAccessForFrame):
(WebKit::WebResourceLoadStatisticsStore::callHasStorageAccessForFrameHandler):
(WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):
(WebKit::WebResourceLoadStatisticsStore::requestStorageAccessEphemeral):
(WebKit::WebResourceLoadStatisticsStore::requestStorageAccessUnderOpener):
(WebKit::WebResourceLoadStatisticsStore::requestStorageAccessUnderOpenerEphemeral):
(WebKit::WebResourceLoadStatisticsStore::grantStorageAccess):
(WebKit::WebResourceLoadStatisticsStore::grantStorageAccessEphemeral):
(WebKit::WebResourceLoadStatisticsStore::grantStorageAccessInStorageSession):
(WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler):
* Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::cookiesForDOM):
(WebKit::NetworkConnectionToWebProcess::setCookiesFromDOM):
(WebKit::NetworkConnectionToWebProcess::cookiesEnabledSync):
(WebKit::NetworkConnectionToWebProcess::cookiesEnabled):
(WebKit::NetworkConnectionToWebProcess::getRawCookies):
(WebKit::NetworkConnectionToWebProcess::cookiesForDOMAsync):
(WebKit::NetworkConnectionToWebProcess::setCookieFromDOMAsync):
(WebKit::NetworkConnectionToWebProcess::subscribeToCookieChangeNotifications):
(WebKit::NetworkConnectionToWebProcess::clearPageSpecificData):
(WebKit::NetworkConnectionToWebProcess::removeStorageAccessForFrame):
(WebKit::NetworkConnectionToWebProcess::hasStorageAccess):
(WebKit::NetworkConnectionToWebProcess::requestStorageAccess):
(WebKit::NetworkConnectionToWebProcess::requestStorageAccessUnderOpener):
* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:
* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* Source/WebKit/NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::didCommitCrossSiteLoadWithDataTransfer):
(WebKit::NetworkProcess::didCommitMainFrameNavigation):
(WebKit::NetworkProcess::removeWebPageNetworkParameters):
* Source/WebKit/NetworkProcess/NetworkProcess.h:
* Source/WebKit/NetworkProcess/NetworkProcess.messages.in:
* Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::logCookieInformation const):
(WebKit::logBlockedCookieInformation):
(WebKit::logCookieInformationInternal):
(WebKit::NetworkResourceLoader::logCookieInformation):
* Source/WebKit/NetworkProcess/NetworkResourceLoader.h:
* Source/WebKit/NetworkProcess/NetworkSession.h:
* Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
* Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate
URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
(-[WKNetworkSessionDelegate
URLSession:task:_schemeUpgraded:completionHandler:]):
(WebKit::NetworkSessionCocoa::createWebSocketTask):
* Source/WebKit/NetworkProcess/cocoa/NetworkStorageSessionCocoa.mm:
(WebKit::NetworkStorageSession::cookiesForURL const):
(WebKit::NetworkStorageSession::cookiesForSession const):
(WebKit::NetworkStorageSession::cookiesForSessionAsVector const):
(WebKit::NetworkStorageSession::cookiesForDOM const):
(WebKit::NetworkStorageSession::cookiesForDOMAsVector const):
(WebKit::NetworkStorageSession::cookieRequestHeaderFieldValue const):
(WebKit::NetworkStorageSession::setCookiesFromDOM const):
(WebKit::NetworkStorageSession::setCookieFromDOM const):
(WebKit::NetworkStorageSession::getRawCookies const):
(WebKit::NetworkStorageSession::startListeningForCookieChangeNotifications):
* Source/WebKit/NetworkProcess/cocoa/NetworkTaskCocoa.mm:
(WebKit::NetworkTaskCocoa::requestThirdPartyCookieBlockingDecision const):
* Source/WebKit/NetworkProcess/cocoa/WebSocketTaskCocoa.mm:
(WebKit::WebSocketTask::WebSocketTask):
* Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp:
(WebKit::NetworkDataTaskCurl::NetworkDataTaskCurl):
(WebKit::NetworkDataTaskCurl::shouldBlockCookies):
* Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.h:
* Source/WebKit/NetworkProcess/curl/NetworkStorageSessionCurl.cpp:
(WebKit::NetworkStorageSession::setCookiesFromDOM const):
(WebKit::NetworkStorageSession::setCookieFromDOM const):
(WebKit::NetworkStorageSession::cookiesForDOM const):
(WebKit::NetworkStorageSession::cookiesForDOMAsVector const):
(WebKit::NetworkStorageSession::getRawCookies const):
(WebKit::NetworkStorageSession::cookieRequestHeaderFieldValue const):
* Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:
(WebKit::NetworkDataTaskSoup::NetworkDataTaskSoup):
(WebKit::NetworkDataTaskSoup::createRequest):
* Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.h:
* Source/WebKit/NetworkProcess/soup/NetworkSessionSoup.cpp:
(WebKit::NetworkSessionSoup::createWebSocketTask):
* Source/WebKit/NetworkProcess/soup/NetworkStorageSessionSoup.cpp:
(WebKit::NetworkStorageSession::setCookiesFromDOM const):
(WebKit::NetworkStorageSession::setCookieFromDOM const):
(WebKit::lookupCookies):
(WebKit::lookupCookiesHeaders):
(WebKit::NetworkStorageSession::getRawCookies const):
(WebKit::NetworkStorageSession::cookiesForDOM const):
(WebKit::NetworkStorageSession::cookiesForDOMAsVector const):
(WebKit::NetworkStorageSession::cookieRequestHeaderFieldValue const):
(WebKit::NetworkStorageSession::startListeningForCookieChangeNotifications):
* Source/WebKit/Shared/NetworkStorageSession.cpp:
(WebKit::NetworkStorageSession::thirdPartyCookieBlockingDecisionForRequest
const):
(WebKit::NetworkStorageSession::shouldBlockCookies const):
(WebKit::NetworkStorageSession::hasStorageAccess const):
(WebKit::NetworkStorageSession::grantStorageAccess):
(WebKit::NetworkStorageSession::removeStorageAccessForFrame):
(WebKit::NetworkStorageSession::didCommitMainFrameNavigation):
(WebKit::NetworkStorageSession::removePageLevelStorageAccessForTopFrameDomain):
(WebKit::NetworkStorageSession::clearPageSpecificDataForResourceLoadStatistics):
(WebKit::NetworkStorageSession::didCommitCrossSiteLoadWithDataTransferFromPrevalentResource):
(WebKit::NetworkStorageSession::clientSideCookieCap const):
(WebKit::NetworkStorageSession::cookiesEnabled const):
* Source/WebKit/Shared/NetworkStorageSession.h:
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::didCommitCrossSiteLoadWithDataTransfer):
(WebKit::NetworkProcessProxy::didCommitMainFrameNavigation):
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didCommitLoadForFrame):
* Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp:
(WebKit::WebLocalFrameLoaderClient::removeStorageAccess):
* Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.h:
* Source/WebKit/WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp:
(WebKit::WebResourceLoadObserver::requestStorageAccessUnderOpener):
(WebKit::WebResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
* Source/WebKit/WebProcess/WebPage/WebCookieCache.cpp:
(WebKit::WebCookieCache::cookiesForDOM):
(WebKit::WebCookieCache::setCookiesFromDOM):
(WebKit::WebCookieCache::didSetCookieFromDOM):
* Source/WebKit/WebProcess/WebPage/WebCookieCache.h:
* Source/WebKit/WebProcess/WebPage/WebCookieJar.cpp:
(WebKit::WebCookieJar::cookies const):
(WebKit::WebCookieJar::setCookies):
(WebKit::WebCookieJar::remoteCookiesEnabledSync const):
(WebKit::WebCookieJar::remoteCookiesEnabled const):
(WebKit::WebCookieJar::getRawCookies const):
(WebKit::WebCookieJar::getCookiesAsync const):
(WebKit::WebCookieJar::setCookieAsync const):
(WebKit::WebCookieJar::addChangeListenerWithAccess):
(WebKit::WebCookieJar::addChangeListener):
* Source/WebKit/WebProcess/WebPage/WebCookieJar.h:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::hasStorageAccess):
(WebKit::WebPage::requestStorageAccess):
Canonical link: https://commits.webkit.org/320832@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications