[webkit-changes] [WebKit/WebKit] 24abd2: Clean up ModelProcessModelPlayerProxy properly in ...
Ada Chan
noreply at github.com
Sat Sep 21 20:41:39 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 24abd21e0c1118fa539b2fbbd45796c110ec01da
https://github.com/WebKit/WebKit/commit/24abd21e0c1118fa539b2fbbd45796c110ec01da
Author: Ada Chan <adachan at apple.com>
Date: 2024-09-21 (Sat, 21 Sep 2024)
Changed paths:
M Source/WebCore/Modules/model-element/HTMLModelElement.cpp
M Source/WebCore/Modules/model-element/HTMLModelElement.h
M Source/WebCore/Modules/model-element/ModelPlayer.h
M Source/WebCore/Modules/model-element/ModelPlayerProvider.h
M Source/WebCore/Modules/model-element/dummy/DummyModelPlayer.cpp
M Source/WebCore/Modules/model-element/dummy/DummyModelPlayer.h
M Source/WebCore/Modules/model-element/dummy/DummyModelPlayerProvider.cpp
M Source/WebCore/Modules/model-element/dummy/DummyModelPlayerProvider.h
M Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.h
M Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.mm
M Source/WebKit/ModelProcess/cocoa/WKModelProcessModelLayer.mm
M Source/WebKit/WebProcess/Model/ModelProcessModelPlayer.h
M Source/WebKit/WebProcess/Model/ModelProcessModelPlayerManager.cpp
M Source/WebKit/WebProcess/Model/ModelProcessModelPlayerManager.h
M Source/WebKit/WebProcess/Model/WebModelPlayerProvider.cpp
M Source/WebKit/WebProcess/Model/WebModelPlayerProvider.h
Log Message:
-----------
Clean up ModelProcessModelPlayerProxy properly in the model process
https://bugs.webkit.org/show_bug.cgi?id=280128
rdar://136424138
Reviewed by Mike Wyrzykowski.
There are two reasons why ModelProcessModelPlayerProxy can’t get
released properly:
- ModelProcessModelPlayerManagerProxy never removes it from the
m_proxies hashmap
- There’s a strong reference cycle between ModelProcessModelPlayerProxy
and WKModelProcessModelLayer
When the HTMLModelElement is done with the ModelProcessModelPlayer, we need
to notify the model process to clean up the corresponding ModelProcessModelPlayerProxy.
HTMLModelElement::deleteModelPlayer() is added to handle that cleanup.
It calls ModelPlayerProvider::deleteModelPlayer(), which for the model process
case, calls ModelProcessModelPlayerManager::deleteModelProcessModelPlayer().
That cleans up the model player on the web process side and sends a message
to the model process to clean up the corresponding ModelProcessModelPlayerProxy.
ModelProcessModelPlayerProxy::invalidate() then sets the WKModelProcessModelLayer's
player to be null to break the reference cycle.
* Source/WebCore/Modules/model-element/HTMLModelElement.cpp:
(WebCore::HTMLModelElement::setSourceURL):
(WebCore::HTMLModelElement::deleteModelPlayer):
* Source/WebCore/Modules/model-element/HTMLModelElement.h:
* Source/WebCore/Modules/model-element/ModelPlayer.h:
* Source/WebCore/Modules/model-element/ModelPlayerProvider.h:
* Source/WebCore/Modules/model-element/dummy/DummyModelPlayer.cpp:
(WebCore::DummyModelPlayer::identifier const):
* Source/WebCore/Modules/model-element/dummy/DummyModelPlayer.h:
* Source/WebCore/Modules/model-element/dummy/DummyModelPlayerProvider.cpp:
(WebCore::DummyModelPlayerProvider::deleteModelPlayer):
* Source/WebCore/Modules/model-element/dummy/DummyModelPlayerProvider.h:
* Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.h:
* Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.mm:
(WebKit::ModelProcessModelPlayerProxy::invalidate):
* Source/WebKit/ModelProcess/cocoa/WKModelProcessModelLayer.mm:
(-[WKModelProcessModelLayer setOpacity:]):
(-[WKModelProcessModelLayer layoutSublayers]):
* Source/WebKit/WebProcess/Model/ModelProcessModelPlayer.h:
(WebKit::ModelProcessModelPlayer::identifier): Deleted.
* Source/WebKit/WebProcess/Model/ModelProcessModelPlayerManager.cpp:
(WebKit::ModelProcessModelPlayerManager::deleteModelProcessModelPlayer):
* Source/WebKit/WebProcess/Model/ModelProcessModelPlayerManager.h:
* Source/WebKit/WebProcess/Model/WebModelPlayerProvider.cpp:
(WebKit::WebModelPlayerProvider::deleteModelPlayer):
* Source/WebKit/WebProcess/Model/WebModelPlayerProvider.h:
Canonical link: https://commits.webkit.org/284048@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list