Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 022c9f84d64993ed580b44bca9558dbfc19149b6
https://github.com/WebKit/WebKit/commit/022c9f84d64993ed580b44bca9558dbfc19149b6
Author: Alex Christensen <[email protected]>
Date: 2025-09-18 (Thu, 18 Sep 2025)
Changed paths:
M Source/WebKit/Platform/Logging.h
M Source/WebKit/Shared/UserContentControllerParameters.h
M Source/WebKit/Shared/UserContentControllerParameters.serialization.in
M Source/WebKit/Shared/WebUserContentControllerDataTypes.h
M Source/WebKit/Shared/WebUserContentControllerDataTypes.serialization.in
M Source/WebKit/UIProcess/API/APIContentWorld.cpp
M Source/WebKit/UIProcess/API/APIContentWorld.h
M Source/WebKit/UIProcess/UserContent/WebUserContentControllerProxy.cpp
M Source/WebKit/UIProcess/UserContent/WebUserContentControllerProxy.h
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/WebProcess/UserContent/WebUserContentController.cpp
M Source/WebKit/WebProcess/UserContent/WebUserContentController.h
M Source/WebKit/WebProcess/UserContent/WebUserContentController.messages.in
M Source/WebKit/WebProcess/WebPage/WebPage.cpp
M Source/WebKit/WebProcess/WebProcess.cpp
M Source/WebKit/WebProcess/WebProcess.h
M Source/WebKit/WebProcess/WebProcess.messages.in
Log Message:
-----------
Simplify WebUserContentController and ContentWorld lifetime management
https://bugs.webkit.org/show_bug.cgi?id=299114
rdar://160876340
Reviewed by Brady Eidson.
Before this PR, WebUserContentControllerProxy was trying to manage the
lifetimes of
InjectedBundleScriptWorlds in different processes, but it was doing so in a
complex
and incomplete manner. This untangles the code a bit by making the ContentWorld
keep track of which processes it has been injected into and cleaning up in those
processes when it is done.
This should have no change in behavior, except for the case where a
WKContentWorld
is used for WKWebView.evaluateJavaScript or callAsyncJavaScript but not a
WKUserScript
or a _WKUserStyleSheet. In that case, the InjectedBundleScriptWorld was not
destroyed
when the WKContentWorld was destroyed because the WebUserContentControllerProxy
had
not been informed of its existence. Now it is cleaned up, which should only
result
in memory savings.
* Source/WebKit/Shared/UserContentControllerParameters.h:
* Source/WebKit/Shared/UserContentControllerParameters.serialization.in:
* Source/WebKit/Shared/WebUserContentControllerDataTypes.h:
* Source/WebKit/Shared/WebUserContentControllerDataTypes.serialization.in:
* Source/WebKit/UIProcess/API/APIContentWorld.cpp:
(API::ContentWorld::~ContentWorld):
(API::ContentWorld::worldDataForProcess const):
(API::ContentWorld::addAssociatedUserContentControllerProxy): Deleted.
(API::ContentWorld::userContentControllerProxyDestroyed): Deleted.
* Source/WebKit/UIProcess/API/APIContentWorld.h:
* Source/WebKit/UIProcess/UserContent/WebUserContentControllerProxy.cpp:
(WebKit::WebUserContentControllerProxy::~WebUserContentControllerProxy):
(WebKit::WebUserContentControllerProxy::parametersForProcess const):
(WebKit::WebUserContentControllerProxy::addUserScript):
(WebKit::WebUserContentControllerProxy::addUserStyleSheet):
(WebKit::WebUserContentControllerProxy::addUserScriptMessageHandler):
(WebKit::WebUserContentControllerProxy::parameters const): Deleted.
(WebKit::WebUserContentControllerProxy::addContentWorld): Deleted.
(WebKit::WebUserContentControllerProxy::contentWorldDestroyed): Deleted.
* Source/WebKit/UIProcess/UserContent/WebUserContentControllerProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::runJavaScriptInFrameInScriptWorld):
(WebKit::WebPageProxy::creationParameters):
* Source/WebKit/WebProcess/UserContent/WebUserContentController.cpp:
(WebKit::worldMap):
(WebKit::WebUserContentController::worldForIdentifier):
(WebKit::WebUserContentController::addContentWorldIfNecessary):
(WebKit::WebUserContentController::removeContentWorld):
(WebKit::WebUserContentController::addUserScripts):
(WebKit::WebUserContentController::removeUserScript):
(WebKit::WebUserContentController::removeAllUserScripts):
(WebKit::WebUserContentController::addUserStyleSheets):
(WebKit::WebUserContentController::removeUserStyleSheet):
(WebKit::WebUserContentController::removeAllUserStyleSheets):
(WebKit::WebUserContentController::addUserScriptMessageHandlers):
(WebKit::WebUserContentController::removeUserScriptMessageHandler):
(WebKit::WebUserContentController::removeAllUserScriptMessageHandlersForWorlds):
(WebKit::WebUserContentController::addContentWorld): Deleted.
(WebKit::WebUserContentController::addContentWorlds): Deleted.
(WebKit::WebUserContentController::removeContentWorlds): Deleted.
* Source/WebKit/WebProcess/UserContent/WebUserContentController.h:
* Source/WebKit/WebProcess/UserContent/WebUserContentController.messages.in:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::m_toolbarsAreVisible):
(WebKit::WebPage::runJavaScriptInFrameInScriptWorld):
* Source/WebKit/WebProcess/WebProcess.cpp:
(WebKit::WebProcess::contentWorldDestroyed):
* Source/WebKit/WebProcess/WebProcess.h:
* Source/WebKit/WebProcess/WebProcess.messages.in:
Canonical link: https://commits.webkit.org/300192@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes