[webkit-changes] [WebKit/WebKit] eb8ff9: Add support for WebExtensionAPIWebRequestEvent and...
Brian Weinstein
noreply at github.com
Thu Jan 18 14:53:09 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: eb8ff94d64827d261308f3c3e98fb19ae87a60a1
https://github.com/WebKit/WebKit/commit/eb8ff94d64827d261308f3c3e98fb19ae87a60a1
Author: Brian Weinstein <bweinstein at apple.com>
Date: 2024-01-18 (Thu, 18 Jan 2024)
Changed paths:
M Source/WebKit/DerivedSources-input.xcfilelist
M Source/WebKit/DerivedSources-output.xcfilelist
M Source/WebKit/DerivedSources.make
M Source/WebKit/Modules/OSX_Private.modulemap
M Source/WebKit/Modules/iOS_Private.modulemap
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
A Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWebRequestEventCocoa.mm
A Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWebRequestEvent.h
A Source/WebKit/WebProcess/Extensions/Cocoa/_WKWebExtensionWebRequestFilter.h
A Source/WebKit/WebProcess/Extensions/Cocoa/_WKWebExtensionWebRequestFilter.mm
A Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIWebRequestEvent.idl
M Tools/TestWebKitAPI/SourcesCocoa.txt
M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
A Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIWebRequest.mm
Log Message:
-----------
Add support for WebExtensionAPIWebRequestEvent and filter code
https://bugs.webkit.org/show_bug.cgi?id=267718
rdar://114823223
Reviewed by Timothy Hatcher.
* Source/WebKit/DerivedSources-input.xcfilelist: Add the new files.
* Source/WebKit/DerivedSources-output.xcfilelist: Ditto.
* Source/WebKit/DerivedSources.make: Ditto.
* Source/WebKit/Modules/OSX_Private.modulemap: Add _WKWebExtensionWebRequestFilter here, it is Private due to being needed in TestWebKitAPI.
* Source/WebKit/Modules/iOS_Private.modulemap: Ditto.
* Source/WebKit/WebKit.xcodeproj/project.pbxproj: Add the new files.
* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWebRequestEventCocoa.mm: Added.
(WebKit::WebExtensionAPIWebRequestEvent::addListener): Add the listener to m_listeners.
(WebKit::WebExtensionAPIWebRequestEvent::removeListener): Remove it from m_listeners.
(WebKit::WebExtensionAPIWebRequestEvent::hasListener): Check for the listener in m_listeners.
(WebKit::WebExtensionAPIWebRequestEvent::removeAllListeners): Clear m_listeners.
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWebRequestEvent.h: Added.
(WebKit::WebExtensionAPIWebRequestEvent::listeners const):
(WebKit::WebExtensionAPIWebRequestEvent::~WebExtensionAPIWebRequestEvent):
(WebKit::WebExtensionAPIWebRequestEvent::WebExtensionAPIWebRequestEvent):
* Source/WebKit/WebProcess/Extensions/Cocoa/_WKWebExtensionWebRequestFilter.h: Added.
* Source/WebKit/WebProcess/Extensions/Cocoa/_WKWebExtensionWebRequestFilter.mm: Added.
(_WKWebExtensionWebRequestResourceTypeFromWKResourceLoadInfo): Get the resource type from the resource load info.
(-[_WKWebExtensionWebRequestFilter initWithDictionary:outErrorMessage:]): Validate the dictionary and create a filter if the dictionary is valid.
(toResourceType): Convert the string to a resource type.
(toTabID): Convert the given double to a std::optional<WebExtensionTabIdentifier>
(toWindowID): Convert the given double to a std::optional<WebExtensionWindowIdentifier>
(-[_WKWebExtensionWebRequestFilter _initializeWithDictionary:]):
(-[_WKWebExtensionWebRequestFilter matchesRequestForResourceOfType:URL:tabID:windowID:]): Perform the matching - making sure URL, tab, window, and resource type match.
* Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIWebRequestEvent.idl: Added.
* Tools/TestWebKitAPI/SourcesCocoa.txt: Add the new test file.
* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Ditto.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIWebRequest.mm: Added.
(TestWebKitAPI::TEST):
(TestWebKitAPI::filterWithDictionary):
Canonical link: https://commits.webkit.org/273194@main
More information about the webkit-changes
mailing list