Skip to content

Commit

Permalink
[web-animations] move shared timing data between AnimationEffect and …
Browse files Browse the repository at this point in the history
…AcceleratedEffect to a dedicated struct

https://bugs.webkit.org/show_bug.cgi?id=264394

Reviewed by Dean Jackson.

Refactor `AcceleratedEffect` and `AnimationEffect` to use a shared struct to store timing-related properties: `AnimationEffectTiming`.
This will allow `AcceleratedEffect` to resolve timing and compute the transformed progress of an animation with the same code used
for `KeyframeEffect` in the WebContent process.

* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/animation/AnimationEffect.cpp:
(WebCore::AnimationEffect::AnimationEffect):
(WebCore::AnimationEffect::getBindingsTiming const):
(WebCore::AnimationEffect::localTime const):
(WebCore::AnimationEffect::playbackRate const):
(WebCore::AnimationEffect::getBasicTiming const):
(WebCore::AnimationEffect::getComputedTiming const):
(WebCore::AnimationEffect::updateTiming):
(WebCore::AnimationEffect::updateStaticTimingProperties):
(WebCore::AnimationEffect::setIterationStart):
(WebCore::AnimationEffect::setIterations):
(WebCore::AnimationEffect::setDelay):
(WebCore::AnimationEffect::setEndDelay):
(WebCore::AnimationEffect::setFill):
(WebCore::AnimationEffect::setIterationDuration):
(WebCore::AnimationEffect::setDirection):
(WebCore::AnimationEffect::setTimingFunction):
(WebCore::AnimationEffect::progressUntilNextStep const):
(WebCore::AnimationEffect::getTiming const): Deleted.
* Source/WebCore/animation/AnimationEffect.h:
(WebCore::AnimationEffect::timing const):
(WebCore::AnimationEffect::delay const):
(WebCore::AnimationEffect::endDelay const):
(WebCore::AnimationEffect::fill const):
(WebCore::AnimationEffect::iterationStart const):
(WebCore::AnimationEffect::iterations const):
(WebCore::AnimationEffect::iterationDuration const):
(WebCore::AnimationEffect::direction const):
(WebCore::AnimationEffect::timingFunction const):
(WebCore::AnimationEffect::activeDuration const):
(WebCore::AnimationEffect::endTime const):
* Source/WebCore/animation/AnimationEffectTiming.cpp: Added.
(WebCore::AnimationEffectTiming::updateComputedProperties):
(WebCore::AnimationEffectTiming::getBasicTiming const):
(WebCore::AnimationEffectTiming::resolve const):
* Source/WebCore/animation/AnimationEffectTiming.h: Added.
* Source/WebCore/platform/animation/AcceleratedEffect.cpp:
(WebCore::AcceleratedEffect::create):
(WebCore::AcceleratedEffect::clone const):
(WebCore::AcceleratedEffect::AcceleratedEffect):
* Source/WebCore/platform/animation/AcceleratedEffect.h:
(WebCore::AcceleratedEffect::timing const):
(WebCore::AcceleratedEffect::animationType const):
(WebCore::AcceleratedEffect::compositeOperation const):
(WebCore::AcceleratedEffect::paused const):
(WebCore::AcceleratedEffect::playbackRate const):
(WebCore::AcceleratedEffect::fill const): Deleted.
(WebCore::AcceleratedEffect::direction const): Deleted.
(WebCore::AcceleratedEffect::timingFunction const): Deleted.
(WebCore::AcceleratedEffect::iterationStart const): Deleted.
(WebCore::AcceleratedEffect::iterations const): Deleted.
(WebCore::AcceleratedEffect::delay const): Deleted.
(WebCore::AcceleratedEffect::endDelay const): Deleted.
(WebCore::AcceleratedEffect::iterationDuration const): Deleted.
(WebCore::AcceleratedEffect::activeDuration const): Deleted.
(WebCore::AcceleratedEffect::endTime const): Deleted.
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:

Canonical link: https://commits.webkit.org/270402@main
  • Loading branch information
graouts committed Nov 8, 2023
1 parent b2e2adf commit 8f40ab2
Show file tree
Hide file tree
Showing 9 changed files with 488 additions and 426 deletions.
1 change: 1 addition & 0 deletions Source/WebCore/Sources.txt
Original file line number Diff line number Diff line change
Expand Up @@ -556,6 +556,7 @@ accessibility/isolatedtree/AXIsolatedObject.cpp
accessibility/isolatedtree/AXIsolatedTree.cpp
animation/AcceleratedTimeline.cpp
animation/AnimationEffect.cpp
animation/AnimationEffectTiming.cpp
animation/AnimationEventBase.cpp
animation/AnimationPlaybackEvent.cpp
animation/AnimationTimeline.cpp
Expand Down
8 changes: 7 additions & 1 deletion Source/WebCore/WebCore.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -2667,7 +2667,7 @@
71537A01146BD9D7008BD615 /* SVGPathData.h in Headers */ = {isa = PBXBuildFile; fileRef = 715379FF146BD9D6008BD615 /* SVGPathData.h */; };
71556CB41F9F09BA00E78D08 /* KeyframeEffect.h in Headers */ = {isa = PBXBuildFile; fileRef = 71556CAA1F9F099B00E78D08 /* KeyframeEffect.h */; settings = {ATTRIBUTES = (Private, ); }; };
71556CBE1F9F0A4900E78D08 /* JSKeyframeEffect.h in Headers */ = {isa = PBXBuildFile; fileRef = 71556CB71F9F09FC00E78D08 /* JSKeyframeEffect.h */; };
7156BCA121CA350F00534397 /* BasicEffectTiming.h in Headers */ = {isa = PBXBuildFile; fileRef = 7156BC9F21CA350600534397 /* BasicEffectTiming.h */; };
7156BCA121CA350F00534397 /* BasicEffectTiming.h in Headers */ = {isa = PBXBuildFile; fileRef = 7156BC9F21CA350600534397 /* BasicEffectTiming.h */; settings = {ATTRIBUTES = (Private, ); }; };
715AD7202050513200D592DC /* DeclarativeAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 715AD71D2050512400D592DC /* DeclarativeAnimation.h */; settings = {ATTRIBUTES = (Private, ); }; };
715AD7212050513F00D592DC /* CSSTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = 7123C186204739BA00789392 /* CSSTransition.h */; };
715FCD1729B09B0E002CE6A7 /* AcceleratedTimeline.h in Headers */ = {isa = PBXBuildFile; fileRef = 715FCD1629B09B09002CE6A7 /* AcceleratedTimeline.h */; settings = {ATTRIBUTES = (Private, ); }; };
Expand All @@ -2694,6 +2694,7 @@
71BF4C3529B098A8008344FC /* AcceleratedEffectStack.h in Headers */ = {isa = PBXBuildFile; fileRef = 71BF4C3129B098A7008344FC /* AcceleratedEffectStack.h */; settings = {ATTRIBUTES = (Private, ); }; };
71C29E32203CE781008F36D2 /* CSSAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 71C29E30203CE76B008F36D2 /* CSSAnimation.h */; settings = {ATTRIBUTES = (Private, ); }; };
71C916081D1483A300ACA47D /* UserInterfaceLayoutDirection.h in Headers */ = {isa = PBXBuildFile; fileRef = 71C916071D1483A300ACA47D /* UserInterfaceLayoutDirection.h */; settings = {ATTRIBUTES = (Private, ); }; };
71D6EAFB2AFA914600A323CF /* AnimationEffectTiming.h in Headers */ = {isa = PBXBuildFile; fileRef = 71D6EAFA2AFA913800A323CF /* AnimationEffectTiming.h */; settings = {ATTRIBUTES = (Private, ); }; };
71DB0FD929007C910071AC42 /* CSSTransformListValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 71DB0FD829007C750071AC42 /* CSSTransformListValue.h */; settings = {ATTRIBUTES = (Private, ); }; };
71DCB7021568197600862271 /* JSSVGZoomAndPan.h in Headers */ = {isa = PBXBuildFile; fileRef = 71DCB7001568197600862271 /* JSSVGZoomAndPan.h */; };
71E2183A17359FB8006E6E4D /* PlugInsResources.h in Headers */ = {isa = PBXBuildFile; fileRef = 71E2183817359FB8006E6E4D /* PlugInsResources.h */; };
Expand Down Expand Up @@ -12759,6 +12760,8 @@
71D6AA931DA4EAF700B23969 /* airplay-placard@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "airplay-placard@2x.png"; sourceTree = "<group>"; };
71D6AAAA1DA4EAF700B23969 /* pip-placard@1x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "pip-placard@1x.png"; sourceTree = "<group>"; };
71D6AAAB1DA4EAF700B23969 /* pip-placard@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "pip-placard@2x.png"; sourceTree = "<group>"; };
71D6EAF92AFA913800A323CF /* AnimationEffectTiming.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AnimationEffectTiming.cpp; sourceTree = "<group>"; };
71D6EAFA2AFA913800A323CF /* AnimationEffectTiming.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AnimationEffectTiming.h; sourceTree = "<group>"; };
71D8323326FCD8F600F348A4 /* skip-forward-support.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = "skip-forward-support.js"; sourceTree = "<group>"; };
71DB0FD829007C750071AC42 /* CSSTransformListValue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSSTransformListValue.h; sourceTree = "<group>"; };
71DB0FDA29007DE40071AC42 /* CSSTransformListValue.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CSSTransformListValue.cpp; sourceTree = "<group>"; };
Expand Down Expand Up @@ -27585,6 +27588,8 @@
71EFCED7202B388D00D7C411 /* AnimationEffect.h */,
71EFCED6202B388C00D7C411 /* AnimationEffect.idl */,
71E2C42421C9351D0024F8C8 /* AnimationEffectPhase.h */,
71D6EAF92AFA913800A323CF /* AnimationEffectTiming.cpp */,
71D6EAFA2AFA913800A323CF /* AnimationEffectTiming.h */,
711AD125236D86D4006FF37C /* AnimationEventBase.cpp */,
711AD123236D86D3006FF37C /* AnimationEventBase.h */,
7C3806DB2505B18900744A7B /* AnimationFrameProvider.idl */,
Expand Down Expand Up @@ -37304,6 +37309,7 @@
49E912AB0EFAC906009D0CAF /* Animation.h in Headers */,
71EFCEDC202B38A900D7C411 /* AnimationEffect.h in Headers */,
71E2C42621C935280024F8C8 /* AnimationEffectPhase.h in Headers */,
71D6EAFB2AFA914600A323CF /* AnimationEffectTiming.h in Headers */,
711AD126236D86E5006FF37C /* AnimationEventBase.h in Headers */,
72A73BEF245A3F90001C9D03 /* AnimationFrameRate.h in Headers */,
49E912AD0EFAC906009D0CAF /* AnimationList.h in Headers */,
Expand Down
Loading

0 comments on commit 8f40ab2

Please sign in to comment.