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