Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: e270f83dd685dc0262a6ab8a12bedf26a0560049
      
https://github.com/WebKit/WebKit/commit/e270f83dd685dc0262a6ab8a12bedf26a0560049
  Author: Brian Weinstein <bweinst...@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


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to