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

Reply via email to