[webkit-changes] [WebKit/WebKit] e270f8: Support declarativeNetRequest.getMatchedRules

Brian Weinstein noreply at github.com
Tue Dec 5 21:44:30 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: e270f83dd685dc0262a6ab8a12bedf26a0560049
      https://github.com/WebKit/WebKit/commit/e270f83dd685dc0262a6ab8a12bedf26a0560049
  Author: Brian Weinstein <bweinstein at apple.com>
  Date:   2023-12-05 (Tue, 05 Dec 2023)

  Changed paths:
    M Source/WebKit/DerivedSources-input.xcfilelist
    M Source/WebKit/DerivedSources.make
    A Source/WebKit/Shared/Extensions/WebExtensionMatchedRuleParameters.h
    A Source/WebKit/Shared/Extensions/WebExtensionMatchedRuleParameters.serialization.in
    M Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIDeclarativeNetRequestCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm
    M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
    M Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDeclarativeNetRequestCocoa.mm
    M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWebNavigationCocoa.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIDeclarativeNetRequest.mm

  Log Message:
  -----------
  Support declarativeNetRequest.getMatchedRules
https://bugs.webkit.org/show_bug.cgi?id=265917
rdar://118940129

Reviewed by Timothy Hatcher.

This patch keeps track of the content rule list actions that each extension has performed and
exposes them through declarativeNetRequest.getMatchedRules().

These can be filtered on tabId and timeStamp, and are limited to only vending information about
URLs that the extension has access to.

* Source/WebKit/DerivedSources-input.xcfilelist:
* Source/WebKit/DerivedSources.make:
* Source/WebKit/Shared/Extensions/WebExtensionMatchedRuleParameters.h: Added.
* Source/WebKit/Shared/Extensions/WebExtensionMatchedRuleParameters.serialization.in: Added.
* Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIDeclarativeNetRequestCocoa.mm:
(WebKit::WebExtensionContext::declarativeNetRequestGetMatchedRules): Iterate over the matched rules and
filter them. Also check to make sure we have permission to access the URLs before vending them.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::unload): Clear the matched rules.
(WebKit::WebExtensionContext::handleContentRuleListNotificationForTab): Increment the blocked resource count
and add the blocked resource to the list of matched rules.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm:
(WebKit::WebExtensionController::handleContentRuleListNotification):
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
(WebKit::WebExtensionContext::matchedRules): Keep track of the matched rules.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.messages.in:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIDeclarativeNetRequestCocoa.mm:
(WebKit::extensionHasPermission): Add a helper method.
(WebKit::toWebAPI): Ditto.
(WebKit::WebExtensionAPIDeclarativeNetRequest::getMatchedRules):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIDeclarativeNetRequest.mm:
(TestWebKitAPI::TEST): Add a test that getMatchedRules returns a match that the frame was blocked.

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




More information about the webkit-changes mailing list