Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 4d8b71918acdc7d53f68ea74f5c5a53fbe44d7eb https://github.com/WebKit/WebKit/commit/4d8b71918acdc7d53f68ea74f5c5a53fbe44d7eb Author: Sihui Liu <sihui_...@apple.com> Date: 2025-03-31 (Mon, 31 Mar 2025)
Changed paths: M Source/WebCore/SourcesCocoa.txt M Source/WebCore/WebCore.xcodeproj/project.pbxproj M Source/WebCore/loader/ContentFilter.cpp M Source/WebCore/loader/ContentFilter.h 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/NetworkExtensionContentFilter.h M Source/WebCore/platform/cocoa/NetworkExtensionContentFilter.mm M Source/WebCore/platform/cocoa/ParentalControlsContentFilter.h M Source/WebCore/platform/cocoa/ParentalControlsContentFilter.mm A Source/WebCore/platform/cocoa/ParentalControlsURLFilter.h A Source/WebCore/platform/cocoa/ParentalControlsURLFilter.mm M Source/WebCore/platform/cocoa/PhotosFormatSoftLink.mm M Source/WebCore/platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.h M Source/WebCore/platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.mm M Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.mm M Source/WebCore/platform/graphics/mac/controls/ButtonControlMac.h M Source/WebCore/platform/graphics/mac/controls/ButtonControlMac.mm M Source/WebCore/platform/graphics/mac/controls/ControlMac.h M Source/WebCore/platform/graphics/mac/controls/ControlMac.mm M Source/WebCore/platform/graphics/mac/controls/ImageControlsButtonMac.h M Source/WebCore/platform/graphics/mac/controls/ImageControlsButtonMac.mm M Source/WebCore/platform/graphics/mac/controls/InnerSpinButtonMac.h M Source/WebCore/platform/graphics/mac/controls/InnerSpinButtonMac.mm M Source/WebCore/platform/graphics/mac/controls/MenuListButtonMac.h M Source/WebCore/platform/graphics/mac/controls/MenuListButtonMac.mm M Source/WebCore/platform/graphics/mac/controls/MenuListMac.h M Source/WebCore/platform/graphics/mac/controls/MenuListMac.mm M Source/WebCore/platform/graphics/mac/controls/MeterMac.h M Source/WebCore/platform/graphics/mac/controls/MeterMac.mm M Source/WebCore/platform/graphics/mac/controls/ProgressBarMac.h M Source/WebCore/platform/graphics/mac/controls/ProgressBarMac.mm M Source/WebCore/platform/graphics/mac/controls/SearchControlMac.h M Source/WebCore/platform/graphics/mac/controls/SearchControlMac.mm M Source/WebCore/platform/graphics/mac/controls/SliderThumbMac.h M Source/WebCore/platform/graphics/mac/controls/SliderThumbMac.mm M Source/WebCore/testing/MockContentFilter.cpp M Source/WebCore/testing/MockContentFilter.h M Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp M Source/WebKit/NetworkProcess/NetworkResourceLoader.h Log Message: ----------- [Content Filtering] Avoid creating multiple WCRBrowserEngineClient instances https://bugs.webkit.org/show_bug.cgi?id=289915 rdar://147251812 Reviewed by Chris Dumez and Ben Nham. The initialization of WCRBrowserEngineClient can be slow, so we should avoid creating multiple WCRBrowserEngineClient objects. This patch ensures a process only creates one WCRBrowserEngineClient instance by introducing ParentalControlsContentFilter class, which is a wrapper of WCRBrowserEngineClient. ContentFilterUnblockHandler and ContentFilter objects now always use the ParentalControlsContentFilter singleton to perform operations, instead of their own instances. To make the implementation more robust, instead of setting m_usesWebContentRestrictions to request using WCRBrowserEngineClient after the creation of PlatformContentFilter object, we now set the flag at creation time, and the flag cannot be changed after creation. This ensures no switch between implementations (WebFilterEvaluator v.s. WCRBrowserEngineClient) after content filtering starts. * Source/WebCore/SourcesCocoa.txt: * Source/WebCore/WebCore.xcodeproj/project.pbxproj: * Source/WebCore/loader/ContentFilter.cpp: (WebCore::ContentFilter::create): (WebCore::ContentFilter::setUsesWebContentRestrictions): Deleted. * Source/WebCore/loader/ContentFilter.h: * Source/WebCore/loader/ContentFilterClient.h: * Source/WebCore/loader/DocumentLoader.cpp: (WebCore::DocumentLoader::startLoadingMainResource): (WebCore::DocumentLoader::usesWebContentRestrictions): * Source/WebCore/loader/DocumentLoader.h: * Source/WebCore/platform/ContentFilterUnblockHandler.h: * Source/WebCore/platform/PlatformContentFilter.h: (WebCore::PlatformContentFilter::setUsesWebContentRestrictions): Deleted. * Source/WebCore/platform/cocoa/ContentFilterUnblockHandlerCocoa.mm: (WebCore::ContentFilterUnblockHandler::requestUnblockAsync const): * Source/WebCore/platform/cocoa/NetworkExtensionContentFilter.h: * Source/WebCore/platform/cocoa/NetworkExtensionContentFilter.mm: (WebCore::NetworkExtensionContentFilter::create): * Source/WebCore/platform/cocoa/ParentalControlsContentFilter.h: * Source/WebCore/platform/cocoa/ParentalControlsContentFilter.mm: (WebCore::ParentalControlsContentFilter::enabled const): (WebCore::ParentalControlsContentFilter::create): (WebCore::ParentalControlsContentFilter::ParentalControlsContentFilter): (WebCore::ParentalControlsContentFilter::responseReceived): (WebCore::ParentalControlsContentFilter::addData): (WebCore::ParentalControlsContentFilter::finishedAddingData): (WebCore::ParentalControlsContentFilter::unblockHandler const): (WebCore::ParentalControlsContentFilter::updateFilterState): (WebCore::ParentalControlsContentFilter::enabled): Deleted. (WebCore::ParentalControlsContentFilter::setUsesWebContentRestrictions): Deleted. * Source/WebCore/platform/cocoa/ParentalControlsURLFilter.h: Copied from Source/WebCore/platform/cocoa/PhotosFormatSoftLink.mm. * Source/WebCore/platform/cocoa/ParentalControlsURLFilter.mm: Added. (WebCore::wcrBrowserEngineClientEnabled): (WebCore::ParentalControlsURLFilter::singleton): (WebCore::ParentalControlsURLFilter::ParentalControlsURLFilter): (WebCore::ParentalControlsURLFilter::isEnabled const): (WebCore::ParentalControlsURLFilter::isURLAllowed): (WebCore::ParentalControlsURLFilter::allowURL): * Source/WebCore/platform/cocoa/PhotosFormatSoftLink.mm: * Source/WebCore/platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.h: * Source/WebCore/platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.mm: (WebCore::CDMPrivateMediaSourceAVFObjC::cdm const): * Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.mm: * Source/WebCore/platform/graphics/mac/controls/ButtonControlMac.h: * Source/WebCore/platform/graphics/mac/controls/ButtonControlMac.mm: * Source/WebCore/platform/graphics/mac/controls/ControlMac.h: * Source/WebCore/platform/graphics/mac/controls/ControlMac.mm: * Source/WebCore/platform/graphics/mac/controls/ImageControlsButtonMac.h: * Source/WebCore/platform/graphics/mac/controls/ImageControlsButtonMac.mm: * Source/WebCore/platform/graphics/mac/controls/InnerSpinButtonMac.h: * Source/WebCore/platform/graphics/mac/controls/InnerSpinButtonMac.mm: * Source/WebCore/platform/graphics/mac/controls/MenuListButtonMac.h: * Source/WebCore/platform/graphics/mac/controls/MenuListButtonMac.mm: * Source/WebCore/platform/graphics/mac/controls/MenuListMac.h: * Source/WebCore/platform/graphics/mac/controls/MenuListMac.mm: * Source/WebCore/platform/graphics/mac/controls/MeterMac.h: * Source/WebCore/platform/graphics/mac/controls/MeterMac.mm: * Source/WebCore/platform/graphics/mac/controls/ProgressBarMac.h: * Source/WebCore/platform/graphics/mac/controls/ProgressBarMac.mm: * Source/WebCore/platform/graphics/mac/controls/SearchControlMac.h: * Source/WebCore/platform/graphics/mac/controls/SearchControlMac.mm: * Source/WebCore/platform/graphics/mac/controls/SliderThumbMac.h: * Source/WebCore/platform/graphics/mac/controls/SliderThumbMac.mm: * Source/WebCore/testing/MockContentFilter.cpp: (WebCore::MockContentFilter::create): * Source/WebCore/testing/MockContentFilter.h: * Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::startContentFiltering): (WebKit::NetworkResourceLoader::usesWebContentRestrictions): * Source/WebKit/NetworkProcess/NetworkResourceLoader.h: Canonical link: https://commits.webkit.org/292963@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes