[webkit-changes] [WebKit/WebKit] fce7a7: Introduce ModelPresentationManagerProxy that manag...
Ada Chan
noreply at github.com
Thu Dec 19 19:56:47 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: fce7a7280e2c1e0812936efc57be17d806d49591
https://github.com/WebKit/WebKit/commit/fce7a7280e2c1e0812936efc57be17d806d49591
Author: Ada Chan <adachan at apple.com>
Date: 2024-12-19 (Thu, 19 Dec 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/ModelPlayerClient.h
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/platform/graphics/GraphicsLayer.h
A Source/WebCore/platform/graphics/ModelContext.cpp
A Source/WebCore/platform/graphics/ModelContext.h
M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp
M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h
M Source/WebCore/rendering/RenderLayerBacking.cpp
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTree.serialization.in
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm
M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
M Source/WebKit/SourcesCocoa.txt
A Source/WebKit/UIProcess/Model/ModelPresentationManagerProxy.h
A Source/WebKit/UIProcess/Model/ModelPresentationManagerProxy.mm
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm
M Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/UIProcess/WebPageProxy.h
M Source/WebKit/UIProcess/WebPageProxyInternals.h
A Source/WebKit/UIProcess/ios/WKPageHostedModelView.h
A Source/WebKit/UIProcess/ios/WKPageHostedModelView.mm
M Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm
M Source/WebKit/UIProcess/ios/forms/WKFileUploadPanel.h
M Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
M Source/WebKit/WebProcess/Model/ios/ARKitInlinePreviewModelPlayerIOS.mm
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.h
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.mm
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteCustom.h
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteCustom.mm
Log Message:
-----------
Introduce ModelPresentationManagerProxy that manages the remote model views on the page
https://bugs.webkit.org/show_bug.cgi?id=284649
rdar://141450845
Reviewed by Simon Fraser.
Add a new ModelPresentationManagerProxy to manage the presentations of remotely
hosted model contents on the page. ModelPresentationManagerProxy has a map of
model layer identifiers to ModelPresentation objects, which contains info
about the model being hosted (ModelContext), the remote view hosting the model layer,
and the new WKPageHostedModelView which is a WKCompositingView subclass used
in the layer tree node for the model contents. ModelContext is passed
down with the LayerCreationProperties. When setting up the view for the model
contents layer tree node, instead of creating a new WKUIRemoteView with the
layer hosting context ID, it’ll ask ModelPresentationManagerProxy for the view.
* Source/WebCore/Modules/model-element/HTMLModelElement.cpp:
(WebCore::HTMLModelElement::graphicsLayer const):
(WebCore::HTMLModelElement::layerID const):
Helper method to get the PlatformLayerID of the primary layer of the model
element.
(WebCore::HTMLModelElement::modelContentsLayerID const):
Renamed from platformLayerID() so it's clear which layer it's for.
(WebCore::HTMLModelElement::modelContext const):
(WebCore::HTMLModelElement::platformLayerID): Deleted.
* Source/WebCore/Modules/model-element/HTMLModelElement.h:
* Source/WebCore/Modules/model-element/ModelPlayerClient.h:
* Source/WebCore/Sources.txt
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/platform/graphics/GraphicsLayer.h:
(WebCore::GraphicsLayer::setContentsToModelContext):
Make this a method dedicated for setting model contents which takes in
a ModelContext.
(WebCore::GraphicsLayer::setContentsToRemotePlatformContext): Deleted.
* Source/WebCore/platform/graphics/ModelContext.cpp
* Source/WebCore/platform/graphics/ModelContext.h
* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::createPlatformCALayer):
(WebCore::GraphicsLayerCA::setContentsToModelContext):
(WebCore::GraphicsLayerCA::setContentsToRemotePlatformContext): Deleted.
* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h:
* Source/WebCore/platform/mediarecorder/MediaRecorderPrivateEncoder.cpp
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateConfiguration):
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTree.serialization.in:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
Adding ModelContext in the AdditionalData.
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
(WebKit::RemoteLayerTreeTransaction::LayerCreationProperties::hostingContextID const):
Updated to handle the new ModelContext additional data.
(WebKit::RemoteLayerTreeTransaction::LayerCreationProperties::modelContext const):
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:
* Source/WebKit/SourcesCocoa.txt:
* Source/WebKit/UIProcess/Model/ModelPresentationManagerProxy.h: Added.
* Source/WebKit/UIProcess/Model/ModelPresentationManagerProxy.mm: Added.
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h:
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
(WebKit::RemoteLayerTreeHost::layerWillBeRemoved):
If the model element's layer is being removed, remove the corresponding
ModelPresentation from ModelPresentationManagerProxy.
* Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
(WebKit::RemoteLayerTreeHost::makeNode):
Instead of always creating a new WKUIRemoteView, get the model view from ModelPresentationManagerProxy.
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didAttachToRunningProcess):
Set up ModelPresentationManagerProxy.
(WebKit::WebPageProxy::resetState):
Invalidate all model presentations on that page.
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebPageProxyInternals.h:
* Source/WebKit/UIProcess/ios/WKPageHostedModelView.h: Copied from Source/WebCore/Modules/model-element/ModelPlayerClient.h.
* Source/WebKit/UIProcess/ios/WKPageHostedModelView.mm: Copied from Source/WebCore/Modules/model-element/ModelPlayerClient.h.
(-[WKPage:WKPageHostedModelView setRemoteModelView:]):
* Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::modelPresentationManagerProxy const):
* Source/WebKit/UIProcess/ios/forms/WKFileUploadPanel.h:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.h:
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.mm:
(WebKit::GraphicsLayerCARemote::createPlatformCALayer):
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm:
(WebKit::PlatformCALayerRemote::create):
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteCustom.h:
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteCustom.mm:
(WebKit::PlatformCALayerRemoteCustom::create):
(WebKit::PlatformCALayerRemoteCustom::PlatformCALayerRemoteCustom):
(WebKit::PlatformCALayerRemoteCustom::populateCreationProperties):
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.h:
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm:
(WebKit::RemoteLayerTreeContext::layerDidEnterContext):
Canonical link: https://commits.webkit.org/288141@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