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

Reply via email to