New issue
Advanced search Search tips

Issue 779189 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: May 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug

Blocking:
issue 430155


Participants' hotlists:
Hotlist-AnimationWorklet
Hostlist-AnimationWorklet-OT


Sign in to add a comment

Animation Worklet - Worklet Animations should continue ticking after duration

Project Member Reported by majidvp@chromium.org, Oct 27 2017

Issue description

A the moment, once animation duration is reached we stop ticking worklet
animations. We should keep ticking such animation until .finish() method is called. 

In particular, one shouldn't need to specify duration as Infinity to have a always running scroll linked effect.



 
Summary: Animation Worklet - Worklet Animations should continue ticking after duration (was: AnimationWorklet -Worklet Animations should continue ticking after duration)
Labels: -Type-Bug Type-Task
Blocking: 430155
Labels: -Type-Task Type-Bug
Labels: Hotlist-Experimental
Cc: majidvp@chromium.org surma@chromium.org
 Issue 824755  has been merged into this issue.
Per flackr@ comment:
> AnimationWorklet animations probably should continue animating indefinitely as long as the timelines can produce updates as we don't know whether the output time values will be in the range of the KeyframeEffect's single iteration or not.

In other word, unlike regular animations, worklet animation finish state is independent of their effect end time since[1]. 

I agree with this. It will however be nice to have a way to define a bounded running time for such animations instead of having to call "finish()" or cancel() on them. Perhaps we need a way to specify a duration for worklet animations itself which by default can be infinity.
 

Note that my current workaround is to specify an infinity iteration for the effect. This keeps the animation ticking!

[1] https://drafts.csswg.org/web-animations/#finished-play-state
Owner: smcgruer@chromium.org
Status: Started (was: Assigned)
Project Member

Comment 8 by bugdroid1@chromium.org, May 4 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/648ba5db335be1a2ecdbc4a1fb52841a4ba98c79

commit 648ba5db335be1a2ecdbc4a1fb52841a4ba98c79
Author: Stephen McGruer <smcgruer@chromium.org>
Date: Fri May 04 16:43:15 2018

[cc] Have WorkletAnimation pause all of its KeyframeEffects

Conceptually, this is somewhat close to what WorkletAnimation does; the
KeyframeEffect skips (seeks) from point to point driven by the script-provided
local time. More importantly, it means that WorkletAnimations do not terminate
after the duration has expired (which they are not meant to do), and allows us
to remove the ActiveTimeProvider hack (in favour of this one!).

This CL also removes PushPropertiesTo from WorkletAnimation. This method used
to push the local_time_ from cc-main to impl. Doing so was incorrect as cc-main
never gets the output of the mutate call, so always has a zero local time, which
then started to interfere with the other changes made in this CL.

Bug:  779189 
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel
Change-Id: Ibb0bdd60753bd24264112e10a1f829d394db27e2
Reviewed-on: https://chromium-review.googlesource.com/1037766
Commit-Queue: Stephen McGruer <smcgruer@chromium.org>
Reviewed-by: Majid Valipour <majidvp@chromium.org>
Cr-Commit-Position: refs/heads/master@{#556087}
[modify] https://crrev.com/648ba5db335be1a2ecdbc4a1fb52841a4ba98c79/cc/animation/animation.cc
[modify] https://crrev.com/648ba5db335be1a2ecdbc4a1fb52841a4ba98c79/cc/animation/animation.h
[modify] https://crrev.com/648ba5db335be1a2ecdbc4a1fb52841a4ba98c79/cc/animation/keyframe_effect.cc
[modify] https://crrev.com/648ba5db335be1a2ecdbc4a1fb52841a4ba98c79/cc/animation/keyframe_effect.h
[modify] https://crrev.com/648ba5db335be1a2ecdbc4a1fb52841a4ba98c79/cc/animation/keyframe_model.cc
[modify] https://crrev.com/648ba5db335be1a2ecdbc4a1fb52841a4ba98c79/cc/animation/keyframe_model.h
[modify] https://crrev.com/648ba5db335be1a2ecdbc4a1fb52841a4ba98c79/cc/animation/worklet_animation.cc
[modify] https://crrev.com/648ba5db335be1a2ecdbc4a1fb52841a4ba98c79/cc/animation/worklet_animation.h
[modify] https://crrev.com/648ba5db335be1a2ecdbc4a1fb52841a4ba98c79/cc/animation/worklet_animation_unittest.cc
[add] https://crrev.com/648ba5db335be1a2ecdbc4a1fb52841a4ba98c79/third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/worklet-animation-duration-expected.html
[add] https://crrev.com/648ba5db335be1a2ecdbc4a1fb52841a4ba98c79/third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/worklet-animation-duration.html
[add] https://crrev.com/648ba5db335be1a2ecdbc4a1fb52841a4ba98c79/third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/worklet-animation-local-time-after-duration-expected.html
[add] https://crrev.com/648ba5db335be1a2ecdbc4a1fb52841a4ba98c79/third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/worklet-animation-local-time-after-duration.html
[add] https://crrev.com/648ba5db335be1a2ecdbc4a1fb52841a4ba98c79/third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/worklet-animation-local-time-before-start-expected.html
[add] https://crrev.com/648ba5db335be1a2ecdbc4a1fb52841a4ba98c79/third_party/WebKit/LayoutTests/virtual/threaded/fast/animationworklet/worklet-animation-local-time-before-start.html

Status: Fixed (was: Started)

Sign in to add a comment