Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: fc079ac269fc721cf297c0db0bd27e1b44443b49
https://github.com/WebKit/WebKit/commit/fc079ac269fc721cf297c0db0bd27e1b44443b49
Author: Antoine Quint <[email protected]>
Date: 2025-10-22 (Wed, 22 Oct 2025)
Changed paths:
M Source/WebCore/Headers.cmake
M Source/WebCore/SaferCPPExpectations/UncountedCallArgsCheckerExpectations
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/animation/AcceleratedEffectStackUpdater.cpp
M Source/WebCore/animation/AcceleratedEffectStackUpdater.h
M Source/WebCore/animation/AnimationTimeline.cpp
M Source/WebCore/animation/AnimationTimeline.h
M Source/WebCore/animation/AnimationTimelinesController.cpp
M Source/WebCore/animation/AnimationTimelinesController.h
M Source/WebCore/animation/DocumentTimeline.cpp
M Source/WebCore/animation/DocumentTimeline.h
M Source/WebCore/platform/animation/AcceleratedEffect.cpp
M Source/WebCore/platform/animation/AcceleratedEffect.h
A Source/WebCore/platform/animation/AcceleratedTimeline.cpp
A Source/WebCore/platform/animation/AcceleratedTimeline.h
A Source/WebCore/platform/animation/TimelineIdentifier.h
M Source/WebCore/rendering/RenderLayerBacking.cpp
M Source/WebCore/rendering/RenderLayerBacking.h
M Source/WebKit/Scripts/webkit/messages.py
M Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTree.serialization.in
M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h
M Source/WebKit/Shared/WTFArgumentCoders.serialization.in
M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
M Source/WebKit/SourcesCocoa.txt
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteAnimationTimeline.cpp
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteAnimationTimeline.h
A
Source/WebKit/UIProcess/RemoteLayerTree/RemoteAnimationTimelineRegistry.cpp
A Source/WebKit/UIProcess/RemoteLayerTree/RemoteAnimationTimelineRegistry.h
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm
M Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h
M
Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.h
M
Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm
M
Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.h
M
Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.mm
M
Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingCoordinatorProxyMac.h
M
Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingCoordinatorProxyMac.mm
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
M Source/WebKit/WebProcess/WebPage/WebPage.cpp
Log Message:
-----------
[threaded-animation-resolution] upload timelines through the remote layer
tree transaction
https://bugs.webkit.org/show_bug.cgi?id=300992
rdar://162873561
Reviewed by Matt Woodrow.
We introduced timelines for remote layer tree animations in 301615@main.
Currently we create
such timelines, as `RemoteAnimationTimeline` objects, in the UI process
exclusively based on
the origin time provided through the remote layer tree transaction.
In this patch we create a system such that timelines in the web process can be
sent through
the remote layer tree transaction along with animation effects such that we may
express several
timeline types down the line.
To that end, `AnimationTimeline` now exposes an `acceleratedRepresentation()`
method that be
overridden by subclasses. Initially, only the `DocumentTimeline` implements an
override to create
the monotonic timeline type we currently support in the remote layer tree.
These timelines are then gathered as we gather accelerated animation effects in
`AnimationTimelinesController::updateAcceleratedEffectStacks()` and sent up as
a new property
in the remote layer tree transaction.
Upon reception in the UI process, remote animation timelines are created based
on this data and,
using a unique identifier, are then associated with the remote animations that
are created from
the transaction.
This further paves the way for supporting progress-based timelines.
* Source/WebCore/Headers.cmake:
* Source/WebCore/SaferCPPExpectations/UncountedCallArgsCheckerExpectations:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/animation/AcceleratedEffectStackUpdater.cpp:
(WebCore::AcceleratedEffectStackUpdater::updateEffectStacks):
(WebCore::AcceleratedEffectStackUpdater::AcceleratedEffectStackUpdater):
Deleted.
* Source/WebCore/animation/AcceleratedEffectStackUpdater.h:
(WebCore::AcceleratedEffectStackUpdater::timelines const):
(WebCore::AcceleratedEffectStackUpdater::timeOrigin const): Deleted.
* Source/WebCore/animation/AnimationTimeline.cpp:
(WebCore::AnimationTimeline::AnimationTimeline):
(WebCore::AnimationTimeline::acceleratedRepresentation):
(WebCore::AnimationTimeline::createAcceleratedRepresentation):
* Source/WebCore/animation/AnimationTimeline.h:
(WebCore::AnimationTimeline::clearAcceleratedRepresentation):
* Source/WebCore/animation/AnimationTimelinesController.cpp:
(WebCore::AnimationTimelinesController::acceleratedEffectStackUpdater):
(WebCore::AnimationTimelinesController::updateAcceleratedEffectStacks):
* Source/WebCore/animation/AnimationTimelinesController.h:
* Source/WebCore/animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::applyPendingAcceleratedAnimations):
(WebCore::DocumentTimeline::createAcceleratedRepresentation):
* Source/WebCore/animation/DocumentTimeline.h:
* Source/WebCore/platform/animation/AcceleratedEffect.cpp:
(WebCore::AcceleratedEffect::create):
(WebCore::AcceleratedEffect::clone const):
(WebCore::AcceleratedEffect::AcceleratedEffect):
* Source/WebCore/platform/animation/AcceleratedEffect.h:
(WebCore::AcceleratedEffect::timeline const):
(WebCore::AcceleratedEffect::timelineIdentifier const):
* Source/WebCore/platform/animation/AcceleratedTimeline.cpp: Added.
(WebCore::AcceleratedTimeline::create):
(WebCore::AcceleratedTimeline::AcceleratedTimeline):
* Source/WebCore/platform/animation/AcceleratedTimeline.h: Added.
(WebCore::AcceleratedTimeline::identifier const):
(WebCore::AcceleratedTimeline::originTime const):
* Source/WebCore/platform/animation/TimelineIdentifier.h: Added.
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateAcceleratedEffectsAndBaseValues):
* Source/WebCore/rendering/RenderLayerBacking.h:
* Source/WebKit/Scripts/webkit/messages.py:
(serialized_identifiers):
(conditions_for_header):
* Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp:
(IPC::serializedIdentifiers):
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTree.serialization.in:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
(WebKit::RemoteLayerTreeTransaction::timelines const):
(WebKit::RemoteLayerTreeTransaction::setTimelines):
(WebKit::RemoteLayerTreeTransaction::acceleratedTimelineTimeOrigin const):
Deleted.
(WebKit::RemoteLayerTreeTransaction::setAcceleratedTimelineTimeOrigin): Deleted.
* Source/WebKit/Shared/WTFArgumentCoders.serialization.in:
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:
* Source/WebKit/SourcesCocoa.txt:
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteAnimationTimeline.cpp:
(WebKit::RemoteAnimationTimeline::create):
(WebKit::RemoteAnimationTimeline::RemoteAnimationTimeline):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteAnimationTimeline.h:
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteAnimationTimelineRegistry.cpp:
Added.
(WebKit::RemoteAnimationTimelineRegistry::update):
(WebKit::RemoteAnimationTimelineRegistry::get const):
(WebKit::RemoteAnimationTimelineRegistry::advanceCurrentTime):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteAnimationTimelineRegistry.h:
Added.
(WebKit::RemoteAnimationTimelineRegistry::isEmpty const):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::updateTimelineRegistration):
(WebKit::RemoteLayerTreeDrawingAreaProxy::timeline const):
(WebKit::RemoteLayerTreeDrawingAreaProxy::registerTimelineIfNecessary): Deleted.
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h:
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
(WebKit::RemoteLayerTreeHost::updateLayerTree):
(WebKit::RemoteLayerTreeHost::timeline const):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm:
(WebKit::RemoteLayerTreeNode::setAcceleratedEffectsAndBaseValues):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
(WebKit::RemoteScrollingCoordinatorProxy::updateTimelineRegistration):
(WebKit::RemoteScrollingCoordinatorProxy::timeline const):
(WebKit::RemoteScrollingCoordinatorProxy::registerTimelineIfNecessary): Deleted.
*
Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.h:
*
Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
(WebKit::RemoteScrollingCoordinatorProxyIOS::updateTimelineRegistration):
(WebKit::RemoteScrollingCoordinatorProxyIOS::timeline const):
(WebKit::RemoteScrollingCoordinatorProxyIOS::updateAnimations):
(WebKit::RemoteScrollingCoordinatorProxyIOS::registerTimelineIfNecessary):
Deleted.
* Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.h:
* Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.mm:
(WebKit::RemoteLayerTreeEventDispatcher::updateTimelineRegistration):
(WebKit::RemoteLayerTreeEventDispatcher::timeline):
(WebKit::RemoteLayerTreeEventDispatcher::updateAnimations):
(WebKit::RemoteLayerTreeEventDispatcher::registerTimelineIfNecessary): Deleted.
(WebKit::RemoteLayerTreeEventDispatcher::timeline const): Deleted.
*
Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingCoordinatorProxyMac.h:
*
Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingCoordinatorProxyMac.mm:
(WebKit::RemoteScrollingCoordinatorProxyMac::updateTimelineRegistration):
(WebKit::RemoteScrollingCoordinatorProxyMac::timeline const):
(WebKit::RemoteScrollingCoordinatorProxyMac::registerTimelineIfNecessary):
Deleted.
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::willCommitLayerTree):
Canonical link: https://commits.webkit.org/301942@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications