New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 619616 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Dec 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows , Mac
Pri: 3
Type: Bug



Sign in to add a comment

Shorthand transform values render no animation with transform-origin

Reported by beneb.i...@gmail.com, Jun 13 2016

Issue description

Chrome Version       : Version 51.0.2704.84 (64-bit)
URLs (if applicable) : http://jsbin.com/kajugapaya/edit?html,css,output
Other browsers tested:
  Add OK or FAIL, along with the version, after other browsers where you
have tested this issue:
     Safari: OK (9.1)
    Firefox: OK (46.0.1)
         IE:


What steps will reproduce the problem?
(1) Visit the JSBin, animation plays.
(2) Change the animation name to 'b'.
(3) No animation observed.


What is the expected result?

That changing the animation name has no impact on rendering.


What happens instead?

A flickering box is shown instead of the animation.


Please provide any additional information below. Attach a screenshot if
possible.

 
Cc: kavvaru@chromium.org
Components: Blink>Animation
Labels: Needs-Feedback
beneb.info@ Thnaks for the issue.

Unable to reproduce the issue on windows 7 , Linux Ubuntu 14.04 and Mac 10.11.5 using chrome version 51.0.2704.84 and canary 53.0.2766.0.
Please find the attached screen cast and confirm anything missed here.
Observed the same behaviour on Firefox as well.

Could you please provide us the expected behaviour screen cast would help us for better understanding the issue.

Thanks,
619616.mp4
489 KB View Download

Comment 2 by co...@lomo.cc, Jun 14 2016

Change the animation name to 'b' please,you will find it.

Comment 3 by suzyh@chromium.org, Jun 14 2016

In the 'b' keyframes, animating from "scale(1)" to "scaleY(0)" is causing a 50-50 flip, as it cannot interpolate between them. If you change the "scale(1)" to "scaleY(1)" to match the second keyframe, it animates again.

Can you please clarify which part of this behaviour you would like to report as a bug?
Labels: -Needs-Feedback M-53 OS-Linux OS-Mac OS-Windows
Status: Untriaged (was: Unconfirmed)
Thanks for the update.

able to reproduce the issue on windows 7, Linux Ubuntu 14.04 and Mac 10.11.5 using chrome version 51.0.2704.84 and canary 53.0.2766.0.

This is observed till M43 builds.M42 and prior builds are not performing any animation.The box is not flickering also.
Marking it as Untriaged to get more inputs from dev team.

Thanks, 

Comment 5 by suzyh@chromium.org, Jun 14 2016

Labels: Needs-Feedback
Readding Needs-Feedback since we're waiting on the reporter's response to my question in #3.
@suzyh

As I understand the specification, `scaleY(0)` performs a transformation equivalent to `scale(1, 0)`. https://www.w3.org/TR/css-transforms-1/#typedef-transform-function

You can verify that this interpolates correctly if you remove the `transform-origin` from both animations.

The bug is that when adding `transform-origin`, in Chrome this no longer interpolates in the `b` animation, whereas it correctly interpolates in Safari & Firefox. I'm running OS X 10.11.4 if that helps.

Comment 7 by suzyh@chromium.org, Jun 14 2016

Labels: -Needs-Feedback Hotlist-Interop Update-quarterly
Status: Available (was: Untriaged)
beneb.info: Thanks for the clarification.

Setting to Update-quarterly since this is not a regression.
If you change scaleY(0) to scaleY(0.1) it animates smoothly. Looks like something's seeing a non invertable matrix and bailing out on interpolating it. We shouldn't be hitting the matrix decomposition path here.

Looks like main thread animations are affected as well.
http://jsbin.com/meyowoceri/edit?html,css,js,console,output

Comment 9 by suzyh@chromium.org, Jul 4 2016

Labels: Hotlist-Squash-A-Bug
Project Member

Comment 10 by sheriffbot@chromium.org, Jul 5 2016

Labels: -M-53 M-54 MovedFrom-53
Moving this nonessential bug to the next milestone.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Labels: -Update-Quarterly Update-Monthly
Owner: alancutter@chromium.org
Status: Started (was: Available)
Looks like the main thread code is not following spec correctly.
https://drafts.csswg.org/css-transforms-1/#interpolation-of-transforms

In TransformOperations::operationsMatch() we call isSameType() rather than canBlendWith().

Seems this behaviour's been around since 2008.
https://chromium.googlesource.com/chromium/src/+/27d127f63bd464b8b26c2a568446cba9ac73e84b%5E%21/third_party/WebKit/WebCore/page/animation/ImplicitAnimation.cpp
Submitted patch to fix: https://codereview.chromium.org/2519333004
Project Member

Comment 16 by bugdroid1@chromium.org, Dec 7 2016

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

commit a5df6c6cf9b46d62121f92e5e4161058877c7051
Author: alancutter <alancutter@chromium.org>
Date: Wed Dec 07 02:41:29 2016

Don't use matrix decomposation on transform list interpolations with compatible pairs of operations

The existing code required transform lists to have identical pairs of
operation types in order to do pairwise interpolation instead of
matrix decomposition.

The transform spec states that each pair must have the same name or
be a derivation of the same primitive.
https://drafts.csswg.org/css-transforms-1/#interpolation-of-transforms

This permits pairs like scaleX and scaleY to be compatible while our
existing code would reject them and fall back to decomposition
interpolation. This difference in behaviour is usually only noticable
when one side of the interpolation is non-invertable.

This patch updates our code to match the spec and more closely match
Firefox's behaviour. Firefox falls back to post multiplication
whenever mismatched rotate functions are blended which does not match
spec text.
Filed Firefox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1322189

BUG= 619616 

Review-Url: https://codereview.chromium.org/2519333004
Cr-Commit-Position: refs/heads/master@{#436845}

[modify] https://crrev.com/a5df6c6cf9b46d62121f92e5e4161058877c7051/third_party/WebKit/LayoutTests/animations/interpolation/transform-interpolation.html
[add] https://crrev.com/a5df6c6cf9b46d62121f92e5e4161058877c7051/third_party/WebKit/LayoutTests/animations/transform-post-multiplication.html
[modify] https://crrev.com/a5df6c6cf9b46d62121f92e5e4161058877c7051/third_party/WebKit/Source/platform/transforms/RotateTransformOperation.h
[modify] https://crrev.com/a5df6c6cf9b46d62121f92e5e4161058877c7051/third_party/WebKit/Source/platform/transforms/ScaleTransformOperation.h
[modify] https://crrev.com/a5df6c6cf9b46d62121f92e5e4161058877c7051/third_party/WebKit/Source/platform/transforms/TransformOperation.h
[modify] https://crrev.com/a5df6c6cf9b46d62121f92e5e4161058877c7051/third_party/WebKit/Source/platform/transforms/TransformOperations.cpp
[modify] https://crrev.com/a5df6c6cf9b46d62121f92e5e4161058877c7051/third_party/WebKit/Source/platform/transforms/TranslateTransformOperation.h

Status: Fixed (was: Started)
@alancutter

Thanks for fixing this! :)

Sign in to add a comment