Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 08e238d762d2f9b83d8415882d4434d3a58f9507
      
https://github.com/WebKit/WebKit/commit/08e238d762d2f9b83d8415882d4434d3a58f9507
  Author: Etienne Segonzac <[email protected]>
  Date:   2026-06-04 (Thu, 04 Jun 2026)

  Changed paths:
    M LayoutTests/TestExpectations
    M 
LayoutTests/http/tests/security/model-element/model-element-crossorigin-allowed-with-all-access-header.html
    M 
LayoutTests/http/tests/security/model-element/model-element-crossorigin-allowed-with-header.html
    M 
LayoutTests/http/tests/security/model-element/model-element-crossorigin-allowed-with-same-origin.html
    M 
LayoutTests/http/tests/security/model-element/model-element-crossorigin-blocked-with-header.html
    M 
LayoutTests/http/tests/security/model-element/model-element-crossorigin-blocked-with-use-credentials-and-all-access-header.html
    M 
LayoutTests/http/tests/security/model-element/model-element-crossorigin-blocked-without-header.html
    M LayoutTests/http/wpt/model-element/model-element-correct-mimetype.html
    M LayoutTests/http/wpt/model-element/model-element-no-mimetype.html
    M LayoutTests/http/wpt/model-element/model-element-wrong-mimetype.html
    R LayoutTests/model-element/gpup-model-element-expected.png
    R LayoutTests/model-element/gpup-model-element-expected.txt
    R LayoutTests/model-element/gpup-model-element-textures-expected.png
    R LayoutTests/model-element/gpup-model-element-textures-expected.txt
    R LayoutTests/model-element/gpup-model-element-textures.html
    R LayoutTests/model-element/gpup-model-element.html
    A LayoutTests/model-element/gpup/gpup-model-element-expected.png
    A LayoutTests/model-element/gpup/gpup-model-element-expected.txt
    A LayoutTests/model-element/gpup/gpup-model-element-textures-expected.png
    A LayoutTests/model-element/gpup/gpup-model-element-textures-expected.txt
    A LayoutTests/model-element/gpup/gpup-model-element-textures.html
    A LayoutTests/model-element/gpup/gpup-model-element.html
    M LayoutTests/model-element/model-element-404-error.html
    M LayoutTests/model-element/model-element-animations-current-time.html
    M LayoutTests/model-element/model-element-animations-initial-values.html
    M LayoutTests/model-element/model-element-animations-loop.html
    M LayoutTests/model-element/model-element-animations-playback.html
    M LayoutTests/model-element/model-element-animations-replace-sources.html
    M LayoutTests/model-element/model-element-bounding-box.html
    R LayoutTests/model-element/model-element-camera-expected.txt
    R LayoutTests/model-element/model-element-camera.html
    M 
LayoutTests/model-element/model-element-contents-layer-updates-with-clipping.html
    M LayoutTests/model-element/model-element-contents-layer-updates.html
    M 
LayoutTests/model-element/model-element-determines-if-scroll-gesture-updates-position-information-after-bfcache.html
    M LayoutTests/model-element/model-element-entity-transform.html
    M LayoutTests/model-element/model-element-environment-map-ready.html
    M LayoutTests/model-element/model-element-graphics-layers-opacity.html
    M LayoutTests/model-element/model-element-graphics-layers.html
    R 
LayoutTests/model-element/model-element-inline-preview-deletion-upon-source-change.html
    R LayoutTests/model-element/model-element-interactive-dragging.html
    M LayoutTests/model-element/model-element-lazy-loading-unloading.html
    M LayoutTests/model-element/model-element-multiple-loads.html
    M LayoutTests/model-element/model-element-on-hidden-page-with-delays.html
    M LayoutTests/model-element/model-element-on-hidden-page.html
    M LayoutTests/model-element/model-element-ready.html
    M LayoutTests/model-element/model-element-stagemode.html
    M LayoutTests/model-element/model-element-suspend-before-ready.html
    M LayoutTests/model-element/model-element-suspend-resume.html
    M LayoutTests/model-element/model-element-update-transform-after-resize.html
    M LayoutTests/model-element/resources/model-element-test-utils.js
    M LayoutTests/model-element/resources/model-utils.js
    M LayoutTests/platform/visionos/TestExpectations
    M Source/WTF/wtf/PlatformEnableCocoa.h
    M Source/WTF/wtf/PlatformHave.h
    M Source/WebKit/GPUProcess/GPUProcess.h
    M Source/WebKit/GPUProcess/GPUProcess.messages.in
    M Source/WebKit/GPUProcess/cocoa/GPUProcessCocoa.mm
    M Source/WebKit/ModelProcess/ModelProcess.cpp
    M Source/WebKit/ModelProcess/ModelProcess.h
    M Source/WebKit/ModelProcess/ModelProcessModelPlayerManagerProxy.cpp
    M Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.h
    M Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.mm
    A Source/WebKit/Platform/spi/visionos/CoreRESPI.h
    M Source/WebKit/UIProcess/Cocoa/WebKitSwiftSoftLink.h
    M Source/WebKit/UIProcess/Cocoa/WebKitSwiftSoftLink.mm
    M Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp
    M Source/WebKit/UIProcess/GPU/GPUProcessProxy.h
    M Source/WebKit/UIProcess/Model/ModelPresentationManagerProxy.mm
    M Source/WebKit/UIProcess/Model/ModelProcessProxy.messages.in
    M Source/WebKit/UIProcess/Model/cocoa/ModelProcessProxyCocoa.mm
    M Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm
    M Source/WebKit/UIProcess/ios/WKPageHostedModelView.mm
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Source/WebKit/WebKitSwift/RealityKit/WKRKEntity.h
    M Source/WebKit/WebKitSwift/RealityKit/WKRKEntity.swift
    M Source/WebKit/WebKitSwift/StageMode/WKStageMode.h
    M Source/WebKit/WebKitSwift/StageMode/WKStageMode.swift
    M Source/WebKit/WebProcess/Model/ModelProcessModelPlayerTransformState.cpp
    M Tools/Scripts/webkitpy/port/visionos.py
    M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ios/DragAndDropTestsIOS.mm

  Log Message:
  -----------
  [visionOS] Revive model-element tests
https://bugs.webkit.org/show_bug.cgi?id=314724
<rdar://176975643>

Reviewed by Mike Wyrzykowski.

Update the model-element test suites to make them less platform
dependant, rebaseline and harden as needed.

Clearly gate the CoreRE specific code so we can turn the ModelProcess on
on the public SDK builds and get test coverage on EWS.

Move the GPUP tests to their own folder for easy skipping per platform.

Remove tests from old implementations (the code was already removed).

* LayoutTests/TestExpectations:
GPUP tests move.
* 
LayoutTests/http/tests/security/model-element/model-element-crossorigin-allowed-with-all-access-header.html:
* 
LayoutTests/http/tests/security/model-element/model-element-crossorigin-allowed-with-header.html:
* 
LayoutTests/http/tests/security/model-element/model-element-crossorigin-allowed-with-same-origin.html:
* 
LayoutTests/http/tests/security/model-element/model-element-crossorigin-blocked-with-header.html:
* 
LayoutTests/http/tests/security/model-element/model-element-crossorigin-blocked-with-use-credentials-and-all-access-header.html:
* 
LayoutTests/http/tests/security/model-element/model-element-crossorigin-blocked-without-header.html:
* LayoutTests/http/wpt/model-element/model-element-correct-mimetype.html:
* LayoutTests/http/wpt/model-element/model-element-no-mimetype.html:
* LayoutTests/http/wpt/model-element/model-element-wrong-mimetype.html:
Remove the ModelProcessEnabled pref (it's on by default on visionOS).

* LayoutTests/model-element/gpup/gpup-model-element-expected.png: Renamed from 
LayoutTests/model-element/gpup-model-element-expected.png.
* LayoutTests/model-element/gpup/gpup-model-element-expected.txt: Renamed from 
LayoutTests/model-element/gpup-model-element-expected.txt.
* LayoutTests/model-element/gpup/gpup-model-element-textures-expected.png: 
Renamed from LayoutTests/model-element/gpup-model-element-textures-expected.png.
* LayoutTests/model-element/gpup/gpup-model-element-textures-expected.txt: 
Renamed from LayoutTests/model-element/gpup-model-element-textures-expected.txt.
* LayoutTests/model-element/gpup/gpup-model-element-textures.html: Renamed from 
LayoutTests/model-element/gpup-model-element-textures.html.
* LayoutTests/model-element/gpup/gpup-model-element.html: Renamed from 
LayoutTests/model-element/gpup-model-element.html.
Move the GPUP tests.

* LayoutTests/model-element/model-element-404-error.html:
Fix a path, the test now passes.

* LayoutTests/model-element/model-element-animations-current-time.html:
* LayoutTests/model-element/model-element-animations-initial-values.html:
* LayoutTests/model-element/model-element-animations-loop.html:
* LayoutTests/model-element/model-element-animations-playback.html:
* LayoutTests/model-element/model-element-animations-replace-sources.html:
* LayoutTests/model-element/model-element-bounding-box.html:
Remove the ModelProcessEnabled pref.

* LayoutTests/model-element/model-element-camera-expected.txt: Removed.
* LayoutTests/model-element/model-element-camera.html: Removed.
Remove test from older implementation.

* 
LayoutTests/model-element/model-element-contents-layer-updates-with-clipping.html:
* LayoutTests/model-element/model-element-contents-layer-updates.html:
* 
LayoutTests/model-element/model-element-determines-if-scroll-gesture-updates-position-information-after-bfcache.html:
* LayoutTests/model-element/model-element-entity-transform.html:
* LayoutTests/model-element/model-element-environment-map-ready.html:
* LayoutTests/model-element/model-element-graphics-layers-opacity.html:
* LayoutTests/model-element/model-element-graphics-layers.html:
Remove the ModelProcessEnabled pref.

* 
LayoutTests/model-element/model-element-inline-preview-deletion-upon-source-change.html:
 Removed.
* LayoutTests/model-element/model-element-interactive-dragging.html: Removed.
Remove tests from older implementation.

* LayoutTests/model-element/model-element-lazy-loading-unloading.html:
This test covers real timing logic, it's now marked as slow and made
more robust

* LayoutTests/model-element/model-element-multiple-loads.html:
* LayoutTests/model-element/model-element-on-hidden-page-with-delays.html:
* LayoutTests/model-element/model-element-on-hidden-page.html:
* LayoutTests/model-element/model-element-ready.html:
* LayoutTests/model-element/model-element-stagemode.html:
* LayoutTests/model-element/model-element-suspend-before-ready.html:
* LayoutTests/model-element/model-element-suspend-resume.html:
* LayoutTests/model-element/model-element-update-transform-after-resize.html:
Remove the ModelProcessEnabled pref.

* LayoutTests/model-element/resources/model-element-test-utils.js:
(async waitForEntityTransform):
Add a new function to await entityTransform changes.
* LayoutTests/model-element/resources/model-utils.js:
(const.assert_points_are_equal):
Add some wiggle room to the function used for center comparison.

* LayoutTests/platform/visionos/TestExpectations:
Enable most model-element tests on visionOS EWS!
Skip the GPUP and immersive tests.
Drive-by, remove an old outdated failure the test runner was complaining
about.

* Source/WTF/wtf/PlatformEnableCocoa.h:
Enable ModelProcess on public visionOS builds. We don't have support for
CoreRE and the shared simualtion hosting / parenting part of the code. But this
enables significant coverage of the ModelElement feature.

* Source/WTF/wtf/PlatformHave.h:
Add an APPLE_INTERNAL gate to HAVE_TASK_IDENTITY_TOKEN.
Introduce a HAVE_CORE_RE flag.

* Source/WebKit/GPUProcess/GPUProcess.h:
* Source/WebKit/GPUProcess/GPUProcess.messages.in:
* Source/WebKit/GPUProcess/cocoa/GPUProcessCocoa.mm:
(WebKit::GPUProcess::createMemoryAttributionIDForTask):
(WebKit::GPUProcess::unregisterMemoryAttributionID):
* Source/WebKit/ModelProcess/ModelProcess.cpp:
(WebKit::ModelProcess::createModelConnectionToWebProcess):
(WebKit::ModelProcess::initializeModelProcess):
* Source/WebKit/ModelProcess/ModelProcess.h:
Gate shared simulation code with `HAVE(CORE_RE)`.

* Source/WebKit/ModelProcess/ModelProcessModelPlayerManagerProxy.cpp:
(WebKit::ModelProcessModelPlayerManagerProxy::deleteModelPlayer):
There's a race between the unload model timer (shorter for some tests)
and the suspension that happens when we enter the BF cache that can
cause two delete calls for the same player. Return early instead of
crashing when this happens.

* Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.h:
(WebCore::REModel::rootRKEntity const):
* Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.mm:
(WebKit::ModelProcessModelPlayerProxy::~ModelProcessModelPlayerProxy):
(WebKit::ModelProcessModelPlayerProxy::loadModel):
(WebKit::ModelProcessModelPlayerProxy::didFinishLoading):
(WebKit::ModelProcessModelPlayerProxy::load):
(WebKit::ModelProcessModelPlayerProxy::beginStageModeTransform):
(WebKit::ModelProcessModelPlayerProxy::updateStageModeTransform):
(WebKit::ModelProcessModelPlayerProxy::endStageModeInteraction):
(WebKit::ModelProcessModelPlayerProxy::stageModeInteractionDidUpdateModel):
(WebKit::ModelProcessModelPlayerProxy::stageModeInteractionInProgress const):
(WebKit::ModelProcessModelPlayerProxy::updateForCurrentStageMode):
Add CoreRE gating and some stubbing code to ensure loading on public SDK
builds.

* Source/WebKit/Platform/spi/visionos/CoreRESPI.h: Added.
(RESRTIdentity):
(REMakeSRT):
(REMakeSRTFromMatrix):
(RESRTMatrix):
Introduce a CoreRE SPI header with basic support for matrices so we can
cover the computeSRT part of the code.

* Source/WebKit/UIProcess/Cocoa/WebKitSwiftSoftLink.h:
* Source/WebKit/UIProcess/Cocoa/WebKitSwiftSoftLink.mm:
* Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp:
* Source/WebKit/UIProcess/GPU/GPUProcessProxy.h:
Add CoreRE gating.

* Source/WebKit/UIProcess/Model/ModelPresentationManagerProxy.mm:
(WebKit::ModelPresentationManagerProxy::ModelPresentationManagerProxy):
(WebKit::ModelPresentationManagerProxy::setUpModelView):
(WebKit::ModelPresentationManagerProxy::startDragForModel):
(WebKit::ModelPresentationManagerProxy::doneWithCurrentDragSession):
(WebKit::ModelPresentationManagerProxy::pageScaleDidChange):
(WebKit::ModelPresentationManagerProxy::invalidateModel):
(WebKit::ModelPresentationManagerProxy::invalidateAllModels):
Stub the model presentation when CoreRE is unavailable.

* Source/WebKit/UIProcess/Model/ModelProcessProxy.messages.in:
* Source/WebKit/UIProcess/Model/cocoa/ModelProcessProxyCocoa.mm:
* Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
(WebKit::RemoteLayerTreeHost::makeNode):
* Source/WebKit/UIProcess/ios/WKPageHostedModelView.mm:
Add CoreRE gating.

* Source/WebKit/WebKit.xcodeproj/project.pbxproj:

* Source/WebKit/WebKitSwift/RealityKit/WKRKEntity.h:
* Source/WebKit/WebKitSwift/RealityKit/WKRKEntity.swift:
(WKRKEntity.headlessRenderer):
(WKRKEntity.rendererUpdateTimer):
(WKRKEntity.ensureInScene):
(WKRKEntity.load(from:withAttributionTaskID:entityMemoryLimit:)):
(WKRKEntity.setUpAnimationWithAutoPlay(_:)):
(WKRKEntity.applyIBLData(_:attributionHandler:)):
Add CoreRE gating. Shared sim loading & stagemode mostly.
Stub the loading for non-CoreRE.

* Source/WebKit/WebKitSwift/StageMode/WKStageMode.h:
* Source/WebKit/WebKitSwift/StageMode/WKStageMode.swift:
* Source/WebKit/WebProcess/Model/ModelProcessModelPlayerTransformState.cpp:

* Tools/Scripts/webkitpy/port/visionos.py:
(VisionOSPort.logging_patterns_to_strip):
Strip some USDLib logs from the tests.
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/ios/DragAndDropTestsIOS.mm:
Make this test APPLE_INTERNAL only.

Canonical link: https://commits.webkit.org/314549@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to