[webkit-changes] [WebKit/WebKit] 6896e9: Make sendToProcessesForEvent compile correctly whe...

Brian Weinstein noreply at github.com
Tue Dec 20 14:05:56 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 6896e90a42a4d8ba60aabdbdbed0aa275a328cf9
      https://github.com/WebKit/WebKit/commit/6896e90a42a4d8ba60aabdbdbed0aa275a328cf9
  Author: Brian Weinstein <bweinstein at apple.com>
  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




More information about the webkit-changes mailing list