Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 172f52ace994d118941140e575139d76fcb06e14
https://github.com/WebKit/WebKit/commit/172f52ace994d118941140e575139d76fcb06e14
Author: Charlie Wolfe <[email protected]>
Date: 2026-09-25 (Fri, 25 Sep 2026)
Changed paths:
M Source/WebCore/PAL/pal/spi/cocoa/WebPrivacySPI.h
M Source/WebCore/contentextensions/ContentExtensionsBackend.cpp
M Source/WebCore/contentextensions/ContentExtensionsBackend.h
M Source/WebCore/loader/ResourceLoadInfo.h
M Source/WebKit/Configurations/AllowedSPI.toml
M Source/WebKit/NetworkProcess/NetworkContentRuleListManager.cpp
M Source/WebKit/NetworkProcess/NetworkContentRuleListManager.h
M Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp
M Source/WebKit/NetworkProcess/NetworkLoadChecker.h
M Source/WebKit/NetworkProcess/NetworkProcess.cpp
M Source/WebKit/NetworkProcess/NetworkProcess.h
M Source/WebKit/NetworkProcess/NetworkProcess.messages.in
M Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h
M
Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.serialization.in
M Source/WebKit/NetworkProcess/NetworkSession.cpp
M Source/WebKit/NetworkProcess/NetworkSession.h
M Source/WebKit/Platform/cocoa/WebPrivacyHelpers.h
M Source/WebKit/Platform/cocoa/WebPrivacyHelpers.mm
M Source/WebKit/UIProcess/API/Cocoa/WKContentRuleList.mm
M Source/WebKit/UIProcess/API/Cocoa/WKContentRuleListInternal.h
M Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm
M Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp
M Source/WebKit/UIProcess/Network/NetworkProcessProxy.h
M Source/WebKit/UIProcess/Network/NetworkProcessProxyCocoa.mm
M Source/WebKit/UIProcess/WebProcessPool.cpp
M Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp
M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ScriptTrackingPrivacyTests.mm
Log Message:
-----------
Block requests with a WebPrivacy provided content rule list instead of a
network process check
rdar://187822866
https://bugs.webkit.org/show_bug.cgi?id=324589
Reviewed by Wenson Hsieh.
This patch replaces the static domain list in the network process with a
content rule list that
WebPrivacy provides.
The UI process loads the list through a new
`TrackingPreventionContentRuleListController` the first
time a page with the setting enabled starts using a data store. It caches the
list, sends it to the
network process, and reloads it when WebPrivacy posts an update.
`shouldBlockForTrackingPolicy()`
then checks each non-main-frame, cross-site request against this list using a
new
`shouldBlockLoad()`.
`ResourceMonitorURLsController`'s request-coalescing logic moves into a shared
`WebPrivacyContentRuleListController` template, and the new controller reuses
it.
Test: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ScriptTrackingPrivacyTests.mm
* Source/WebCore/PAL/pal/spi/cocoa/WebPrivacySPI.h:
* Source/WebCore/contentextensions/ContentExtensionsBackend.cpp:
(WebCore::ContentExtensions::ContentExtensionsBackend::processContentRuleListsForLoad
const):
(WebCore::ContentExtensions::ContentExtensionsBackend::shouldBlockLoad const):
(WebCore::ContentExtensions::ContentExtensionsBackend::processContentRuleListsForResourceMonitoring):
* Source/WebCore/contentextensions/ContentExtensionsBackend.h:
* Source/WebCore/loader/ResourceLoadInfo.h:
* Source/WebKit/Configurations/AllowedSPI.toml:
* Source/WebKit/NetworkProcess/NetworkContentRuleListManager.cpp:
(WebKit::NetworkContentRuleListManager::setTrackingPreventionContentRuleList):
* Source/WebKit/NetworkProcess/NetworkContentRuleListManager.h:
* Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp:
(WebKit::contentExtensionResourceType):
(WebKit::NetworkLoadChecker::shouldBlockForTrackingPolicy):
* Source/WebKit/NetworkProcess/NetworkLoadChecker.h:
* Source/WebKit/NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::setTrackingPreventionContentRuleList):
* Source/WebKit/NetworkProcess/NetworkProcess.h:
* Source/WebKit/NetworkProcess/NetworkProcess.messages.in:
* Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h:
* Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.serialization.in:
* Source/WebKit/NetworkProcess/NetworkSession.cpp:
(WebKit::NetworkSession::isRequestBlockable): Deleted.
* Source/WebKit/NetworkProcess/NetworkSession.h:
* Source/WebKit/Platform/cocoa/WebPrivacyHelpers.h:
(WebKit::WebPrivacyContentRuleListController::prepare):
* Source/WebKit/Platform/cocoa/WebPrivacyHelpers.mm:
(WebKit::ResourceMonitorURLsController::canRequestContentRuleList const):
(WebKit::ResourceMonitorURLsController::requestContentRuleList):
(WebKit::TrackingPreventionContentRuleListController::singleton):
(WebKit::TrackingPreventionContentRuleListController::resourceTypeValue const):
(WebKit::TrackingPreventionContentRuleListController::canRequestContentRuleList
const):
(WebKit::TrackingPreventionContentRuleListController::requestContentRuleList):
(WebKit::isRequestToKnownCrossSiteTracker):
(WebKit::ResourceMonitorURLsController::prepare): Deleted.
(WebKit::isRequestBlockable): Deleted.
* Source/WebKit/UIProcess/API/Cocoa/WKContentRuleList.mm:
(WebKit::createCompiledContentRuleList):
* Source/WebKit/UIProcess/API/Cocoa/WKContentRuleListInternal.h:
* Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::createCompiledContentRuleList): Deleted.
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::cachedTrackingPreventionContentRuleList):
(WebKit::NetworkProcessProxy::NetworkProcessProxy):
(WebKit::NetworkProcessProxy::requestTrackingPreventionContentRuleList):
(WebKit::NetworkProcessProxy::loadTrackingPreventionContentRuleList):
(WebKit::NetworkProcessProxy::setTrackingPreventionContentRuleList):
(WebKit::NetworkProcessProxy::platformLoadTrackingPreventionContentRuleList):
(WebKit::NetworkProcessProxy::platformObserveTrackingPreventionContentRuleListUpdates):
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:
* Source/WebKit/UIProcess/Network/NetworkProcessProxyCocoa.mm:
(WebKit::NetworkProcessProxy::platformLoadTrackingPreventionContentRuleList):
(WebKit::NetworkProcessProxy::platformObserveTrackingPreventionContentRuleListUpdates):
* Source/WebKit/UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::pageBeginUsingWebsiteDataStore):
* Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::addParametersShared):
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ScriptTrackingPrivacyTests.mm:
(TestWebKitAPI::makeTrackingPreventionContentRuleListHandler):
(TestWebKitAPI::installTrackingPreventionContentRuleList):
(TestWebKitAPI::TrackingPreventionContentRuleListSwizzler::TrackingPreventionContentRuleListSwizzler):
(TestWebKitAPI::TrackingPreventionContentRuleListSwizzler::~TrackingPreventionContentRuleListSwizzler):
(TestWebKitAPI::supportsTrackingPreventionContentRuleListRequests):
(TestWebKitAPI::setUpWebViewForFingerprintingTests):
(TestWebKitAPI::(ScriptTrackingPrivacyTests, SameSiteFetchNotBlocked)):
(TestWebKitAPI::(ScriptTrackingPrivacyTests, MainFrameNavigationNotBlocked)):
(TestWebKitAPI::(ScriptTrackingPrivacyTests, CrossSiteFetchBlocked)):
(TestWebKitAPI::(ScriptTrackingPrivacyTests,
CrossSiteFetchNotBlockedWhenResourceLoadStatisticsDisabled)):
Canonical link: https://commits.webkit.org/321932@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications