[webkit-changes] [WebKit/WebKit] c37022: Fix MessageReceivers for Web Extensions.

Timothy Hatcher noreply at github.com
Fri Nov 18 15:01:47 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: c370224a221cafc67bfde137de67c887bce864b6
      https://github.com/WebKit/WebKit/commit/c370224a221cafc67bfde137de67c887bce864b6
  Author: Timothy Hatcher <timothy at apple.com>
  Date:   2022-11-18 (Fri, 18 Nov 2022)

  Changed paths:
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm
    M Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp
    M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
    M Source/WebKit/UIProcess/Extensions/WebExtensionController.cpp
    M Source/WebKit/UIProcess/Extensions/WebExtensionController.h
    M Source/WebKit/UIProcess/WebProcessPool.h
    M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.cpp
    M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h
    M Source/WebKit/WebProcess/Extensions/WebExtensionControllerProxy.cpp
    M Source/WebKit/WebProcess/Extensions/WebExtensionControllerProxy.h

  Log Message:
  -----------
  Fix MessageReceivers for Web Extensions.
https://bugs.webkit.org/show_bug.cgi?id=248098

Reviewed by Brian Weinstein.

Use the WebProcessPool instead of WebProcessProxy to register MessageReceivers in the UIProcess.
The previous approach was not following the WKWebView process change when it navigated.
Also use WeakPtr in the global HashMaps that track the controllers and contexts, this lets
us eliminate some code that manages the map since the WeakPtr will clear on destruct already.
This is also true for the MessageReceiverMap.

* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
(WebKit::WebExtensionContext::webViewWebContentProcessDidTerminate): Drive-by ASSERT fix when the
background tries to load again.
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionControllerCocoa.mm:
(WebKit::WebExtensionController::load):
(WebKit::WebExtensionController::unload):
(WebKit::WebExtensionController::addPage):
(WebKit::WebExtensionController::removePage):
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp:
(WebKit::webExtensionContexts):
(WebKit::WebExtensionContext::WebExtensionContext):
(WebKit::WebExtensionContext::~WebExtensionContext): Deleted.
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionController.cpp:
(WebKit::webExtensionControllers):
(WebKit::WebExtensionController::WebExtensionController):
(WebKit::WebExtensionController::~WebExtensionController): Deleted.
* Source/WebKit/UIProcess/Extensions/WebExtensionController.h:
(WebKit::WebExtensionController::sendToAllProcesses):
* Source/WebKit/UIProcess/WebProcessPool.h: Added operator == and != to make comparison easier.
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.cpp:
(WebKit::webExtensionContextProxies):
(WebKit::WebExtensionContextProxy::get):
(WebKit::WebExtensionContextProxy::getOrCreate):
(WebKit::WebExtensionContextProxy::WebExtensionContextProxy):
(WebKit::WebExtensionContextProxy::~WebExtensionContextProxy): Deleted.
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h:
* Source/WebKit/WebProcess/Extensions/WebExtensionControllerProxy.cpp:
(WebKit::webExtensionControllerProxies):
(WebKit::WebExtensionControllerProxy::get):
(WebKit::WebExtensionControllerProxy::getOrCreate):
(WebKit::WebExtensionControllerProxy::WebExtensionControllerProxy):
(WebKit::WebExtensionControllerProxy::~WebExtensionControllerProxy): Deleted.
* Source/WebKit/WebProcess/Extensions/WebExtensionControllerProxy.h:

Canonical link: https://commits.webkit.org/256857@main




More information about the webkit-changes mailing list