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

Reply via email to