[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