Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 617326575536554ba7faf2a1f95788f6714f38c1
      
https://github.com/WebKit/WebKit/commit/617326575536554ba7faf2a1f95788f6714f38c1
  Author: Wenson Hsieh <[email protected]>
  Date:   2024-09-10 (Tue, 10 Sep 2024)

  Changed paths:
    M Source/WebKit/Platform/cocoa/WebPrivacyHelpers.h
    M Source/WebKit/Platform/cocoa/WebPrivacyHelpers.mm
    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/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Source/WebKit/UIProcess/WebProcessPool.cpp
    M Source/WebKit/UIProcess/WebProcessPool.h
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp

  Log Message:
  -----------
  [WebPrivacy] Reduce code duplication in helper classes used to manage 
remotely updatable lists
https://bugs.webkit.org/show_bug.cgi?id=279469

Reviewed by Charlie Wolfe and Abrar Rahman Protyasha.

Ahead of making further changes in this area, clean up the following helper 
classes to consolidate
(currently) duplicated code underneath common base classes. See below for more 
details.

No change in behavior.

* Source/WebKit/Platform/cocoa/WebPrivacyHelpers.h:
(WebKit::ListDataObserver::create):
(WebKit::ListDataObserver::ListDataObserver):

We currently have 3 nearly-identical classes, that all fulfill the same purpose 
of wrapping a
callback in a weakly-held C++ object:

- LinkDecorationFilteringDataObserver
- StorageAccessPromptQuirkObserver
- StorageAccessUserAgentStringQuirkObserver

Simply consolidate these three into a single class: `WebKit::ListDataObserver`.

(WebKit::ListDataController::shared):
(WebKit::ListDataController::setCachedListDataForTesting):
(WebKit::ListDataController::cachedListData const):
(WebKit::ListDataController::setCachedListData):
(WebKit::ListDataController::didUpdateCachedListData):

Add two helper classes:

1.  `ListDataControllerBase`, a virtual, non-templated class which implements 
`observeUpdates()` and
    `initialize()`.

2.  `ListDataController<S, T>`, a templated class which derives from 
`ListDataControllerBase` and
    exposes getters and setters for the backing `T m_cachedListData`.

This split between non-templated and templated classes allows us to keep the 
implementations of
`observeUpdates` and `initialize` in the C++ source (rather than an inline 
header), which is
necessary since the implementation of `observeUpdates` calls into ObjC code but 
this header is
included in C++ sources.

(WebKit::LinkDecorationFilteringController::cachedListData const):
(WebKit::LinkDecorationFilteringDataObserver::create): Deleted.
(WebKit::LinkDecorationFilteringDataObserver::invokeCallback): Deleted.
(WebKit::LinkDecorationFilteringDataObserver::LinkDecorationFilteringDataObserver):
 Deleted.
(WebKit::LinkDecorationFilteringController::cachedStrings const): Deleted.
(WebKit::StorageAccessPromptQuirkObserver::create): Deleted.
(WebKit::StorageAccessPromptQuirkObserver::invokeCallback): Deleted.
(WebKit::StorageAccessPromptQuirkObserver::StorageAccessPromptQuirkObserver): 
Deleted.
(WebKit::StorageAccessUserAgentStringQuirkObserver::create): Deleted.
(WebKit::StorageAccessUserAgentStringQuirkObserver::invokeCallback): Deleted.
(WebKit::StorageAccessUserAgentStringQuirkObserver::StorageAccessUserAgentStringQuirkObserver):
 Deleted.
(WebKit::StorageAccessPromptQuirkController::cachedQuirks const): Deleted.
(WebKit::StorageAccessUserAgentStringQuirkController::cachedQuirks const): 
Deleted.
* Source/WebKit/Platform/cocoa/WebPrivacyHelpers.mm:
(-[WKWebPrivacyNotificationListener initWithType:callback:]):
(-[WKWebPrivacyNotificationListener dealloc]):
(-[WKWebPrivacyNotificationListener didUpdate:]):

Refactor `WKWebPrivacyNotificationListener` so that it takes a single callback 
block and resource
type, and only calls the callback if the notification's resource type matches. 
This is much cleaner
than enumerating every single list type as a member, but only using a single 
member for any given
listener instance.

(WebKit::ListDataControllerBase::observeUpdates):
(WebKit::ListDataControllerBase::initialize):
(WebKit::LinkDecorationFilteringController::resourceType const):
(WebKit::LinkDecorationFilteringController::updateList):
(WebKit::requestLinkDecorationFilteringData):
(WebKit::StorageAccessPromptQuirkController::resourceType const):
(WebKit::StorageAccessPromptQuirkController::didUpdateCachedListData):
(WebKit::StorageAccessPromptQuirkController::updateList):
(WebKit::StorageAccessUserAgentStringQuirkController::resourceType const):
(WebKit::StorageAccessUserAgentStringQuirkController::updateList):
(WebKit::RestrictedOpenerDomainsController::RestrictedOpenerDomainsController):
(WebKit::RestrictedOpenerDomainsController::update):
(WebKit::TrackerAddressLookupInfo::populateIfNeeded):
(WebKit::TrackerDomainLookupInfo::populateIfNeeded):
(WebKit::canUseWebPrivacyFramework): Deleted.
(WebKit::resourceDataChangedNotificationName): Deleted.
(WebKit::notificationUserInfoResourceTypeKey): Deleted.

Remove several workarounds that are no longer necessary, since we dropped 
support for macOS Monterey
on trunk.

(-[WKWebPrivacyNotificationListener init]): Deleted.
(-[WKWebPrivacyNotificationListener listenForLinkFilteringDataChanges:]): 
Deleted.
(-[WKWebPrivacyNotificationListener 
listenForStorageAccessPromptQuirkChanges:]): Deleted.
(-[WKWebPrivacyNotificationListener 
listenForStorageAccessUserAgentStringQuirkChanges:]): Deleted.
(-[WKWebPrivacyNotificationListener listenForRestrictedOpenerDomainsChanges:]): 
Deleted.
(WebKit::LinkDecorationFilteringController::shared): Deleted.
(WebKit::LinkDecorationFilteringController::observeUpdates): Deleted.
(WebKit::LinkDecorationFilteringController::setCachedStrings): Deleted.
(WebKit::LinkDecorationFilteringController::updateStrings): Deleted.
(WebKit::StorageAccessPromptQuirkController::shared): Deleted.
(WebKit::StorageAccessPromptQuirkController::observeUpdates): Deleted.
(WebKit::StorageAccessPromptQuirkController::setCachedQuirks): Deleted.
(WebKit::StorageAccessPromptQuirkController::setCachedQuirksForTesting): 
Deleted.
(WebKit::StorageAccessPromptQuirkController::initialize): Deleted.
(WebKit::StorageAccessPromptQuirkController::updateQuirks): Deleted.
(WebKit::StorageAccessUserAgentStringQuirkController::shared): Deleted.
(WebKit::StorageAccessUserAgentStringQuirkController::observeUpdates): Deleted.
(WebKit::StorageAccessUserAgentStringQuirkController::setCachedQuirks): Deleted.
(WebKit::StorageAccessUserAgentStringQuirkController::setCachedQuirksForTesting):
 Deleted.
(WebKit::StorageAccessUserAgentStringQuirkController::initialize): Deleted.
(WebKit::StorageAccessUserAgentStringQuirkController::updateQuirks): Deleted.
* Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeWebProcess):
(WebKit::WebProcessPool::platformInitializeNetworkProcess):
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::sendCreationParametersToNewProcess):
(WebKit::NetworkProcessProxy::NetworkProcessProxy):
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::initializeWebPage):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::createNewPage):
(WebKit::WebPageProxy::creationParameters):
(WebKit::WebPageProxy::sendCachedLinkDecorationFilteringData):
(WebKit::WebPageProxy::waitForInitialLinkDecorationFilteringData):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebProcessPool.cpp:
* Source/WebKit/UIProcess/WebProcessPool.h:
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::setStorageAccessPromptQuirkForTesting):
(WebKit::WebsiteDataStore::setUserAgentStringQuirkForTesting):

Canonical link: https://commits.webkit.org/283464@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