Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 0c0655a175613f58168c7f30652e989cc0fe2736 https://github.com/WebKit/WebKit/commit/0c0655a175613f58168c7f30652e989cc0fe2736 Author: Brian Weinstein <bweinst...@apple.com> Date: 2024-01-23 (Tue, 23 Jan 2024)
Changed paths: M Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp M Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h M Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.serialization.in M Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp M Source/WebKit/NetworkProcess/NetworkResourceLoader.h M Source/WebKit/Shared/Extensions/WebExtensionFrameIdentifier.h M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWebRequestCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWebRequestEventCocoa.mm M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWebRequestEvent.h M Source/WebKit/WebProcess/Extensions/Cocoa/_WKWebExtensionWebRequestFilter.h M Source/WebKit/WebProcess/Extensions/Cocoa/_WKWebExtensionWebRequestFilter.mm M Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIWebRequestEvent.idl M Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIWebRequest.mm Log Message: ----------- Implement event firing from the web process for webRequest events and add tests https://bugs.webkit.org/show_bug.cgi?id=267963 rdar://114823223 Reviewed by Timothy Hatcher. The tests exposed a few issues that were also fixed here: 1) The network process wasn't calling into WebPageProxy when running the tests because the page didn't have a resource load delegate. To fix this, also call into the WebPageProxy when the page has an extension controller. 2) There was a copy/paste-o in WebExtensionContext::resourceLoadDidPerformHTTPRedirection where the wrong events were being sent. 3) When just a filter was being passed to webRequest.event.addListener, it was being treated as the extraInfoSpec because we weren't being specific enough about the type. This PR also changed _WKWebExtensionWebRequestFilter to deal with WebKit::ResourceLoadInfo instead of _WKResourceLoadInfo. * Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp: (WebKit::NetworkResourceLoadParameters::NetworkResourceLoadParameters): Add a new pageHasExtensionController parameter. * Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h: * Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.serialization.in: * Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::shouldSendResourceLoadMessages const): Check both pageHasResourceLoadClient and pageHasExtensionController. (WebKit::NetworkResourceLoader::startNetworkLoad): Adopt shouldSendResourceLoadMessages. (WebKit::NetworkResourceLoader::didReceiveResponse): Ditto. (WebKit::NetworkResourceLoader::didFinishLoading): Ditto. (WebKit::NetworkResourceLoader::didFailLoading): Ditto. (WebKit::NetworkResourceLoader::didReceiveChallenge): Ditto. (WebKit::NetworkResourceLoader::continueWillSendRequest): Ditto. * Source/WebKit/NetworkProcess/NetworkResourceLoader.h: * Source/WebKit/Shared/Extensions/WebExtensionFrameIdentifier.h: (WebKit::toWebExtensionFrameIdentifier): Add a new flavor of this method. * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm: (WebKit::WebExtensionContext::resourceLoadDidPerformHTTPRedirection): Make sure we are calling the correct events here. * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWebRequestCocoa.mm: (WebKit::convertRequestBodyToWebExtensionFormat): Convert the request body to the format extensions expect. (WebKit::webRequestDetailsForResourceLoad): Generate a dictionary of information about the resource load conforming to the webRequest spec. (WebKit::convertHeaderFieldsToWebExtensionFormat): Convert the header fields to an array of dictionaries. (WebKit::headersReceivedDetails): Convert the NSHTTPURLResponse information into a dictionary conforming to the webRequest spec. (WebKit::WebExtensionContextProxy::resourceLoadDidSendRequest): Call the correct events. (WebKit::WebExtensionContextProxy::resourceLoadDidPerformHTTPRedirection): Ditto. (WebKit::WebExtensionContextProxy::resourceLoadDidReceiveChallenge): Ditto. (WebKit::WebExtensionContextProxy::resourceLoadDidReceiveResponse): Ditto. (WebKit::WebExtensionContextProxy::resourceLoadDidCompleteWithError): Ditto. * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWebRequestEventCocoa.mm: (WebKit::WebExtensionAPIWebRequestEvent::invokeListenersWithArgument): Check the filter and invoke the correct listeners. * Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWebRequestEvent.h: * Source/WebKit/WebProcess/Extensions/Cocoa/_WKWebExtensionWebRequestFilter.h: * Source/WebKit/WebProcess/Extensions/Cocoa/_WKWebExtensionWebRequestFilter.mm: (_WKWebExtensionWebRequestResourceTypeFromResourceLoadInfo): Updated to deal with ResourceLoadInfo::Type. (_WKWebExtensionWebRequestResourceTypeFromWKResourceLoadInfo): Deleted. * Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIWebRequestEvent.idl: Make sure extraInfoSpec is an array of strings. * Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp: (WebKit::addParametersShared): Set pageHasExtensionController. * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIWebRequest.mm: (TestWebKitAPI::TEST): Add tests for various parts of webRequest functionality. Canonical link: https://commits.webkit.org/273393@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes