New issue
Advanced search Search tips

Issue 657242 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Oct 2016
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 1
Type: Bug-Regression



Sign in to add a comment

element.animate() with a positive delay does not get composited

Project Member Reported by loyso@chromium.org, Oct 19 2016

Issue description

Only the first animation gets composited.
See the attached test case.

keyframeEffect->snapshotAllCompositorKeyframes is never called in CSSAnimations::calculateCompositorAnimationUpdate.

This was a regression CL, I believe:
https://codereview.chromium.org/2043273002

It relates to the comment in CompositorAnimations.cpp:

// FIXME: This relies on StringKeyframes being eagerly evaluated, which will
// not happen eventually. Instead we should extract the CSSValue here
// and convert using another set of toAnimatableXXXOperations functions.

would be nice to fix it once and for all.
 
heaviside_stress_test_android.html
759 bytes View Download
This bug is affecting Chrome stable 54.
Looks like it only affects calls to element.animate() with positive delays.
Labels: Regressed-54
Status: Started (was: Assigned)
Created fix: https://codereview.chromium.org/2427293003

https://codereview.chromium.org/2043273002 is the one that added the call to snapshotCompositorKeyframes() in StyleResolver that (probably) introduced this bug. I believe this patch is in Chrome 54 meaning it's a stable regression.

I don't think the fix warrants a merge to stable as it only affects element.animate() calls that have positive delays. If we see reports from users about this we can consider merging the fix.
Summary: element.animate() with a positive delay does not get composited (was: Second and subsequent animations on individual elements never get composited)
Project Member

Comment 4 by bugdroid1@chromium.org, Oct 20 2016

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

commit f4ffc982b16ade07e7b821633110807cc325d272
Author: alancutter <alancutter@chromium.org>
Date: Thu Oct 20 02:36:36 2016

Remove stale comment regarding StringKeyframe being eagerly evaluated.

As of https://codereview.chromium.org/2043273002 we don't snapshot
compositor keyframes eagerly, instead we snapshot during style resolve.
The compositor animations code relies on style resolve occuring before
we commit compositor animations rather than eager evaluation now.

BUG= 657242 

Review-Url: https://chromiumcodereview.appspot.com/2429353002
Cr-Commit-Position: refs/heads/master@{#426376}

[modify] https://crrev.com/f4ffc982b16ade07e7b821633110807cc325d272/third_party/WebKit/Source/core/animation/CompositorAnimations.cpp

Project Member

Comment 5 by bugdroid1@chromium.org, Oct 20 2016

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

commit 7c2e9fef72cd494e3a09599697f015b8ef192fb4
Author: alancutter <alancutter@chromium.org>
Date: Thu Oct 20 04:38:16 2016

Fix calls to element.animate() with positive delays not being composited

We were only snapshotting compositor keyframes when there was an animation
update.

In the case of element.animate() with a positive delay there's
no CSS animation change to the animation engine nor are there any effects
to be applied. Previously we would early out in this situation, this
change ensures we still look for KeyframeEffects that require
compositor snapshotting.

BUG= 657242 

Review-Url: https://chromiumcodereview.appspot.com/2427293003
Cr-Commit-Position: refs/heads/master@{#426404}

[add] https://crrev.com/7c2e9fef72cd494e3a09599697f015b8ef192fb4/third_party/WebKit/LayoutTests/virtual/threaded/animations/element-animate-positive-delay.html
[modify] https://crrev.com/7c2e9fef72cd494e3a09599697f015b8ef192fb4/third_party/WebKit/Source/core/css/resolver/StyleResolver.cpp

Status: Fixed (was: Started)

Sign in to add a comment