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

Reply via email to