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

Reply via email to