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

Reply via email to