[webkit-changes] [WebKit/WebKit] ccf872: Remote list updates for link decoration filtering ...

Wenson Hsieh noreply at github.com
Fri Aug 18 12:37:12 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ccf8724c8c3407cb21486abe4b0c0437c8b5d31b
      https://github.com/WebKit/WebKit/commit/ccf8724c8c3407cb21486abe4b0c0437c8b5d31b
  Author: Wenson Hsieh <wenson_hsieh at apple.com>
  Date:   2023-08-18 (Fri, 18 Aug 2023)

  Changed paths:
    M Source/WebCore/PAL/pal/cocoa/WebPrivacySoftLink.h
    M Source/WebCore/PAL/pal/cocoa/WebPrivacySoftLink.mm
    M Source/WebKit/Platform/cocoa/WebPrivacyHelpers.mm

  Log Message:
  -----------
  Remote list updates for link decoration filtering fail in Safari 17
https://bugs.webkit.org/show_bug.cgi?id=260391
rdar://114047664

Reviewed by Tim Horton.

On macOS Monterey (but not macOS Ventura or later), calling:

```
dlopen("/System/Library/PrivateFrameworks/WebPrivacy.framework/WebPrivacy", RTLD_NOW);
```

...fails to load WebPrivacy.framework from the Safari staged framework directory. This causes
`PAL::isWebPrivacyFrameworkAvailable()` to return `false`, which in turn breaks link decoration
filtering when advanced privacy protections are enabled. In comparison, the main built-in tracker
blocker loaded by Safari actually *successfully* loads, because we only use `objc_getClass` to look
up `WPResources`, and don't depend on a successful `dlopen`.

On downlevels, this call to `dlopen` is actually unnecessary, since we already link WebPrivacy via
`-weak_framework`; as such, it's sufficient to simply check whether any one of the framework API
classes (e.g. `WPResources`) have been loaded.

* Source/WebCore/PAL/pal/cocoa/WebPrivacySoftLink.h:
* Source/WebCore/PAL/pal/cocoa/WebPrivacySoftLink.mm:
* Source/WebKit/Platform/cocoa/WebPrivacyHelpers.mm:

Also, remove unnecessary soft link helpers for `WPNetworkAddressRange` (we don't need this because
we never need to create one of these in WebKit).

(WebKit::canUseWebPrivacyFramework):
(WebKit::resourceDataChangedNotificationName):
(WebKit::notificationUserInfoResourceTypeKey):
(-[WKWebPrivacyNotificationListener init]):
(-[WKWebPrivacyNotificationListener dealloc]):
(-[WKWebPrivacyNotificationListener didUpdate:]):
(WebKit::LinkDecorationFilteringController::updateStrings):
(WebKit::requestLinkDecorationFilteringData):
(WebKit::TrackerAddressLookupInfo::populateIfNeeded):
(WebKit::TrackerDomainLookupInfo::populateIfNeeded):

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




More information about the webkit-changes mailing list