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