Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 6896e90a42a4d8ba60aabdbdbed0aa275a328cf9
https://github.com/WebKit/WebKit/commit/6896e90a42a4d8ba60aabdbdbed0aa275a328cf9
Author: Brian Weinstein <[email protected]>
Date: 2022-12-20 (Tue, 20 Dec 2022)
Changed paths:
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
M Source/WebKit/UIProcess/Extensions/WebExtensionController.h
M Source/WebKit/UIProcess/Extensions/WebExtensionController.messages.in
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
A Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionContextProxyCocoa.mm
M
Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionControllerProxyCocoa.mm
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in
M Source/WebKit/WebProcess/Extensions/WebExtensionControllerProxy.h
M Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
Log Message:
-----------
Make sendToProcessesForEvent compile correctly when used.
https://bugs.webkit.org/show_bug.cgi?id=249514
<rdar://problem/102820594>
Reviewed by Timothy Hatcher.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
(WebKit::WebExtensionContext::sendToProcessesForEvent):
Fire the onBeforeNavigateEvent when a frame starts to load content.
https://bugs.webkit.org/show_bug.cgi?id=249514
rdar://102820594
Reviewed by Timothy Hatcher.
When a frame begins navigation, WebKit tells all extensions about it using the
following flow.
- WebFrameLoaderClient sends a message to the WebExtensionController using IPC.
- WebExtensionController iterates over all the WebExtensionContexts and:
- Sends a message to their WebExtensionContextProxy using IPC.
The WebExtensionContextProxy then handles this call by firing the
onBeforeNavigate event on the extension.
There are some loose ends here:
1) We are firing events for some pages we shouldn't
2) The tab and frame IDs that we are vending to the listener aren't correct
(they are identifiers, but not ones that have been
normalized for the required context)
3) We should be passing more information in the details dictionary.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm:
(WebKit::WebExtensionController::didStartProvisionalLoadForFrame): Tell every
extension context about the event.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionController.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionController.messages.in:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionContextProxyCocoa.mm:
Copied from
Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in.
(WebKit::WebExtensionContextProxy::dispatchWebNavigationOnBeforeNavigateEvent):
Create a details dictionary and
fire the "onBeforeNavigate" event.
* Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionControllerProxyCocoa.mm:
(WebKit::WebExtensionControllerProxy::didStartProvisionalLoadForFrame): Tell
the UIProcess about this.
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h:
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in:
* Source/WebKit/WebProcess/Extensions/WebExtensionControllerProxy.h:
* Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDidStartProvisionalLoad): Tell the
extensions controller about this.
Canonical link: https://commits.webkit.org/258163@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes