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


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to