Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2fe72762174e1f9efb5e71455bf41bcb82c94c83
      
https://github.com/WebKit/WebKit/commit/2fe72762174e1f9efb5e71455bf41bcb82c94c83
  Author: David Quesada <[email protected]>
  Date:   2025-05-01 (Thu, 01 May 2025)

  Changed paths:
    M Source/WebCore/PAL/pal/spi/cocoa/WebContentRestrictionsSPI.h
    M Source/WebCore/loader/ContentFilter.cpp
    M Source/WebCore/loader/ContentFilterClient.h
    M Source/WebCore/loader/DocumentLoader.cpp
    M Source/WebCore/loader/DocumentLoader.h
    M Source/WebCore/platform/ContentFilterUnblockHandler.h
    M Source/WebCore/platform/PlatformContentFilter.h
    M Source/WebCore/platform/cocoa/ContentFilterUnblockHandlerCocoa.mm
    M Source/WebCore/platform/cocoa/ParentalControlsContentFilter.h
    M Source/WebCore/platform/cocoa/ParentalControlsContentFilter.mm
    M Source/WebCore/platform/cocoa/ParentalControlsURLFilter.h
    M Source/WebCore/platform/cocoa/ParentalControlsURLFilter.mm
    M Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp
    M Source/WebKit/NetworkProcess/NetworkResourceLoader.h
    M Source/WebKit/NetworkProcess/NetworkSession.cpp
    M Source/WebKit/NetworkProcess/NetworkSession.h
    M Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h
    M 
Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.serialization.in
    M Source/WebKit/UIProcess/API/Cocoa/WKErrorPrivate.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm
    M Source/WebKit/UIProcess/WebFrameProxy.cpp
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h
    M Tools/TestWebKitAPI/SourcesCocoa.txt
    M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
    A Tools/TestWebKitAPI/Tests/WebKitCocoa/WebContentRestrictions.mm

  Log Message:
  -----------
  Support alternative configurations for web content restrictions
https://bugs.webkit.org/show_bug.cgi?id=291915
rdar://149723541

Reviewed by Sihui Liu.

Make it possible for an app to direct WebContentRestrictions to a particular 
path
to load content restriction configurations from. This functionality is exposed 
on
_WKWebsiteDataStoreConfiguration, since the restriction configuration is 
applied to
all networking within that session. This reverses some of the singleton-ization
introduced in https://commits.webkit.org/292963@main, since the ability to 
configure a
particular policy for web content restrictions is exposed by creating a new 
instance of
WCRBrowserEngineClient with a path. It's still beneficial to reuse instances of 
these
classes, but now there may need to be more than one in the case where one 
process uses
multiple configurations for different browsing contexts.

* Source/WebCore/PAL/pal/spi/cocoa/WebContentRestrictionsSPI.h:
* Source/WebCore/loader/ContentFilter.cpp:
(WebCore::ContentFilter::create):
* Source/WebCore/loader/ContentFilterClient.h:
* Source/WebCore/loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::webContentRestrictionsConfigurationPath const):
* Source/WebCore/loader/DocumentLoader.h:
* Source/WebCore/platform/ContentFilterUnblockHandler.h:
(WebCore::ContentFilterUnblockHandler::configurationPath const):
(WebCore::ContentFilterUnblockHandler::setConfigurationPath):
* Source/WebCore/platform/PlatformContentFilter.h:
* Source/WebCore/platform/cocoa/ContentFilterUnblockHandlerCocoa.mm:
(WebCore::ContentFilterUnblockHandler::requestUnblockAsync const):
* Source/WebCore/platform/cocoa/ParentalControlsContentFilter.h:
* Source/WebCore/platform/cocoa/ParentalControlsContentFilter.mm:
(WebCore::ParentalControlsContentFilter::enabled const):
(WebCore::ParentalControlsContentFilter::ParentalControlsContentFilter):
(WebCore::ParentalControlsContentFilter::responseReceived):
* Source/WebCore/platform/cocoa/ParentalControlsURLFilter.h:
* Source/WebCore/platform/cocoa/ParentalControlsURLFilter.mm:
(WebCore::wcrBrowserEngineClientEnabled):
(WebCore::ParentalControlsURLFilter::filterWithConfigurationPath):
(WebCore::ParentalControlsURLFilter::ParentalControlsURLFilter):
(WebCore::ParentalControlsURLFilter::singleton):
* Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::webContentRestrictionsConfigurationPath const):
* Source/WebKit/NetworkProcess/NetworkResourceLoader.h:
* Source/WebKit/NetworkProcess/NetworkSession.cpp:
(WebKit::m_dataStoreIdentifier):
* Source/WebKit/NetworkProcess/NetworkSession.h:
(WebKit::NetworkSession::webContentRestrictionsConfigurationFile const):
* Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h:
* 
Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.serialization.in:
* Source/WebKit/UIProcess/API/Cocoa/WKErrorPrivate.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
(-[_WKWebsiteDataStoreConfiguration webContentRestrictionsConfigurationURL]):
(-[_WKWebsiteDataStoreConfiguration 
setWebContentRestrictionsConfigurationURL:]):
* Source/WebKit/UIProcess/WebFrameProxy.cpp:
(WebKit::WebFrameProxy::didHandleContentFilterUnblockNavigation):
    When handling a request from the web process to unblock a website, read the
    configuration path from this web view's data store, then hand it to the
    ContentFilterUnblockHandler. It didn't seem wise to make this property
    serializable / deserializable, since that could give a compromised web
    process the ability to direct the UI process to perform IO on an
    attacker-controlled path.
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::parameters):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:
(WebKit::WebsiteDataStoreConfiguration::copy const):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:
(WebKit::WebsiteDataStoreConfiguration::setWebContentRestrictionsConfigurationFile):
(WebKit::WebsiteDataStoreConfiguration::webContentRestrictionsConfigurationFile 
const):
* Tools/TestWebKitAPI/SourcesCocoa.txt:
* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WebContentRestrictions.mm: Added.
(-[WebContentRestrictionsNavigationDelegate 
webView:didFailProvisionalNavigation:withError:]):
(permissiveConfiguration):
(restrictiveConfiguration):
(TEST(WebContentRestrictions, ConfigurationFileDoesNotExist)):
(TEST(WebContentRestrictions, ConfigurationFileIsPermissive)):
(TEST(WebContentRestrictions, ConfigurationFileIsRestrictive)):
(TEST(WebContentRestrictions, MultipleConfigurationFiles)):

Canonical link: https://commits.webkit.org/294381@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to