Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 42a042b2f09f8d9f1ce03936a13be5360df66b41
https://github.com/WebKit/WebKit/commit/42a042b2f09f8d9f1ce03936a13be5360df66b41
Author: Jean Haberer <[email protected]>
Date: 2025-12-04 (Thu, 04 Dec 2025)
Changed paths:
M
LayoutTests/model-element/immersive/model-element-immersive-basic-expected.txt
M LayoutTests/model-element/immersive/model-element-immersive-basic.html
M
LayoutTests/model-element/immersive/model-element-immersive-hidden-inline-expected.txt
M Source/WebCore/Modules/model-element/HTMLModelElement.cpp
M Source/WebCore/Modules/model-element/HTMLModelElement.h
M Source/WebCore/Modules/model-element/ModelPlayer.cpp
M Source/WebCore/Modules/model-element/ModelPlayer.h
M Source/WebCore/Modules/model-element/ModelPlayerTransformState.h
M Source/WebCore/Modules/model-element/PlaceholderModelPlayer.cpp
M Source/WebCore/Modules/model-element/PlaceholderModelPlayer.h
M Source/WebCore/dom/DocumentImmersive.cpp
M Source/WebCore/dom/DocumentImmersive.h
M Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.h
M Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.messages.in
M Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.mm
M Source/WebKit/WebProcess/Model/ModelProcessModelPlayer.cpp
M Source/WebKit/WebProcess/Model/ModelProcessModelPlayer.h
M Source/WebKit/WebProcess/Model/ModelProcessModelPlayerTransformState.cpp
M Source/WebKit/WebProcess/Model/ModelProcessModelPlayerTransformState.h
Log Message:
-----------
Prepare the model player for the immersive presentation
https://bugs.webkit.org/show_bug.cgi?id=303400
rdar://165702118
Reviewed by Etienne Segonzac.
Add logic in the model player to prepare for an immersive presentation.
Ensure the model player is ready and the model is loaded before allowing
the immersive presentation.
Add the exitImmersive plumbing to exit an immersive presentation.
*
LayoutTests/model-element/immersive/model-element-immersive-basic-expected.txt:
* LayoutTests/model-element/immersive/model-element-immersive-basic.html:
*
LayoutTests/model-element/immersive/model-element-immersive-hidden-inline-expected.txt:
Test results updated.
* Source/WebCore/Modules/model-element/HTMLModelElement.cpp:
(WebCore::HTMLModelElement::ensureImmersivePresentation):
(WebCore::HTMLModelElement::exitImmersivePresentation):
* Source/WebCore/Modules/model-element/HTMLModelElement.h:
* Source/WebCore/Modules/model-element/ModelPlayer.cpp:
(WebCore::ModelPlayer::ensureImmersivePresentation):
(WebCore::ModelPlayer::exitImmersivePresentation):
* Source/WebCore/Modules/model-element/ModelPlayer.h:
* Source/WebCore/Modules/model-element/ModelPlayerTransformState.h:
* Source/WebCore/Modules/model-element/PlaceholderModelPlayer.cpp:
(WebCore::PlaceholderModelPlayer::ensureImmersivePresentation):
(WebCore::PlaceholderModelPlayer::exitImmersivePresentation):
Invalidate the transform if an exit immersive transition is performed on
a placeholder model player.
* Source/WebCore/Modules/model-element/PlaceholderModelPlayer.h:
* Source/WebCore/dom/DocumentImmersive.cpp:
(WebCore::DocumentImmersive::exitImmersive):
(WebCore::DocumentImmersive::requestImmersive):
(WebCore::DocumentImmersive::updateElementIsImmersive):
* Source/WebCore/dom/DocumentImmersive.h:
* Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.h:
* Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.messages.in:
* Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.mm:
(WebKit::ModelProcessModelPlayerProxy::createLayer):
(WebKit::computeSRT):
Compute the tranform for an immersive presentation - scaled for the physical
world.
(WebKit::ModelProcessModelPlayerProxy::computeTransform):
(WebKit::ModelProcessModelPlayerProxy::didFinishLoading):
(WebKit::ModelProcessModelPlayerProxy::didFailLoading):
(WebKit::ModelProcessModelPlayerProxy::sizeDidChange):
(WebKit::ModelProcessModelPlayerProxy::setEnvironmentMap):
(WebKit::ModelProcessModelPlayerProxy::applyEnvironmentMapDataAndRelease):
(WebKit::ModelProcessModelPlayerProxy::ensureImmersivePresentation):
(WebKit::ModelProcessModelPlayerProxy::exitImmersivePresentation):
(WebKit::ModelProcessModelPlayerProxy::setImmersivePresentation):
(WebKit::ModelProcessModelPlayerProxy::ensureModelLoaded):
(WebKit::ModelProcessModelPlayerProxy::triggerModelLoadedCallbacks):
Ensure the model is fully loaded before completing the immersive transition.
* Source/WebKit/WebProcess/Model/ModelProcessModelPlayer.cpp:
(WebKit::ModelProcessModelPlayer::ensureImmersivePresentation):
(WebKit::ModelProcessModelPlayer::exitImmersivePresentation):
* Source/WebKit/WebProcess/Model/ModelProcessModelPlayer.h:
* Source/WebKit/WebProcess/Model/ModelProcessModelPlayerTransformState.cpp:
(WebKit::ModelProcessModelPlayerTransformState::setHasPortal):
(WebKit::ModelProcessModelPlayerTransformState::setStageMode):
(WebKit::ModelProcessModelPlayerTransformState::invalidateTransform):
* Source/WebKit/WebProcess/Model/ModelProcessModelPlayerTransformState.h:
Canonical link: https://commits.webkit.org/303901@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications