Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 4c1da06718e44824de0db555c8770da34d9e5f15
https://github.com/WebKit/WebKit/commit/4c1da06718e44824de0db555c8770da34d9e5f15
Author: Charlie Wolfe <[email protected]>
Date: 2026-10-05 (Mon, 05 Oct 2026)
Changed paths:
M Source/WebCore/dom/Document.cpp
M Source/WebCore/dom/Document.h
M Source/WebCore/loader/DocumentLoader.cpp
M Source/WebCore/loader/DocumentLoader.h
M Source/WebCore/loader/FrameLoader.cpp
M Source/WebCore/loader/FrameLoader.h
M Source/WebCore/page/UserContentURLPattern.cpp
M Source/WebCore/page/UserContentURLPattern.h
M Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp
M Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm
M Source/WebKit/Shared/LoadParameters.h
M Source/WebKit/Shared/LoadParameters.serialization.in
M Source/WebKit/Shared/PolicyDecision.h
M Source/WebKit/Shared/PolicyDecision.serialization.in
M Source/WebKit/UIProcess/API/APINavigation.cpp
M Source/WebKit/UIProcess/API/APINavigation.h
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/UIProcess/WebPageProxy.h
M Source/WebKit/WebProcess/WebPage/WebFrame.cpp
M Source/WebKit/WebProcess/WebPage/WebPage.cpp
M Source/WebKit/WebProcess/WebPage/WebPage.h
M Tools/TestWebKitAPI/Helpers/cocoa/WebExtensionUtilities.mm
M Tools/TestWebKitAPI/SourcesCocoa.txt
A
Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebExtensionUnpartitionedStorage.mm
Log Message:
-----------
Give extension page subframes unpartitioned cookie access
https://bugs.webkit.org/show_bug.cgi?id=325066
rdar://184858993
Reviewed by Sihui Liu.
When a page relaxes third-party cookie blocking and its CORS-disabling patterns
all resolve to a
single site, the UI process now gives a subframe navigation to that site
first-party storage. Every
ancestor between the frame and the main frame must also match. The UI process
adds the site as an
allowed first party for the frame's process and sends it to the web process in
PolicyDecision /
LoadParameters. The web process stores it on the DocumentLoader and uses it to
set
firstPartyForCookies, isTopSite and siteForCookies on the request and the
Document. Redirects to
another site, sandboxed frames and opaque origins drop back to partitioned
storage. about:blank and
srcdoc children inherit access only from a same-origin parent.
Test:
Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebExtensionUnpartitionedStorage.mm
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::updateHasUnpartitionedStorageAccess):
(WebCore::Document::computeHasUnpartitionedStorageAccess const):
(WebCore::Document::securityOriginDidChange):
* Source/WebCore/dom/Document.h:
(WebCore::Document::hasUnpartitionedStorageAccess const):
* Source/WebCore/loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::updateRequestForUnpartitionedStorageAccess const):
(WebCore::DocumentLoader::willSendRequest):
* Source/WebCore/loader/DocumentLoader.h:
(WebCore::DocumentLoader::hasUnpartitionedStorageAccess const):
(WebCore::DocumentLoader::setUnpartitionedStorageSite):
* Source/WebCore/loader/FrameLoader.cpp:
(WebCore::FrameLoader::didBeginDocument):
(WebCore::FrameLoader::setFirstPartyForCookies):
(WebCore::FrameLoader::partitionedFirstPartyForCookiesForSubframeNavigation):
(WebCore::FrameLoader::updateRequestAndAddExtraFields):
* Source/WebCore/loader/FrameLoader.h:
* Source/WebCore/page/UserContentURLPattern.cpp:
(WebCore::UserContentURLPattern::siteMatchedByPatterns):
* Source/WebCore/page/UserContentURLPattern.h:
* Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
* Source/WebKit/Shared/LoadParameters.h:
* Source/WebKit/Shared/LoadParameters.serialization.in:
* Source/WebKit/Shared/PolicyDecision.h:
* Source/WebKit/Shared/PolicyDecision.serialization.in:
* Source/WebKit/UIProcess/API/APINavigation.cpp:
(API::Navigation::setCurrentRequest):
* Source/WebKit/UIProcess/API/APINavigation.h:
(API::Navigation::setUnpartitionedStorageSite):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::receivedNavigationActionPolicyDecision):
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::continueNavigationInNewProcess):
(WebKit::WebPageProxy::unpartitionedStorageSiteForNavigation const):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::didReceivePolicyDecision):
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::loadRequest):
(WebKit::WebPage::createDocumentLoader):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Tools/TestWebKitAPI/SourcesCocoa.txt:
*
Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebExtensionUnpartitionedStorage.mm:
Added.
(TestWebKitAPI::manifestWithLocalhostHostPermission):
(TestWebKitAPI::extensionResources):
(TestWebKitAPI::seedFirstPartyState):
(TestWebKitAPI::loadExtensionPageAndCollectFrameReports):
(TestWebKitAPI::TEST(WKWebExtensionUnpartitionedStorage,
SameSiteCookiesAreSentToHostPermittedFrame)):
(TestWebKitAPI::TEST(WKWebExtensionUnpartitionedStorage,
SameSiteCookiesAreSentToHostPermittedFrameWithSiteIsolation)):
(TestWebKitAPI::TEST(WKWebExtensionUnpartitionedStorage,
HostPermissionWithPathAppliesToWholeOrigin)):
(TestWebKitAPI::extensionResourcesEmbeddingNamedFrames):
(TestWebKitAPI::TEST(WKWebExtensionUnpartitionedStorage,
RedirectOutOfHostPermittedFrameIsPartitioned)):
(TestWebKitAPI::TEST(WKWebExtensionUnpartitionedStorage,
RedirectOutOfHostPermittedFrameIsPartitionedWithSiteIsolation)):
(TestWebKitAPI::runRedirectIntoHostPermittedFrameTest):
(TestWebKitAPI::TEST(WKWebExtensionUnpartitionedStorage,
RedirectIntoHostPermittedFrameIsUnpartitioned)):
(TestWebKitAPI::TEST(WKWebExtensionUnpartitionedStorage,
RedirectIntoHostPermittedFrameIsUnpartitionedWithSiteIsolation)):
(TestWebKitAPI::TEST(WKWebExtensionUnpartitionedStorage,
AboutBlankChildOfHostPermittedFrameSeesItsCookies)):
(TestWebKitAPI::extensionResourcesEmbeddingFrame):
(TestWebKitAPI::loadExtensionPageAndWaitForCheck):
(TestWebKitAPI::TEST(WKWebExtensionUnpartitionedStorage,
CrossSiteNavigationOfHostPermittedFrameDoesNotSendStrictCookies)):
(TestWebKitAPI::TEST(WKWebExtensionUnpartitionedStorage,
SameSiteNavigationOfHostPermittedFrameSendsStrictCookies)):
Canonical link: https://commits.webkit.org/322707@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications