Bug 127087

Summary: [Texmap] Intrinsic style should be set after the animation is done
Product: WebKit Reporter: Jae Hyun Park <jaepark>
Component: Layout and RenderingAssignee: Jae Hyun Park <jaepark>
Status: NEW    
Severity: Normal CC: cmarcelo, commit-queue, hw1008.kim, kondapallykalyan, luiz, mrobinson, noam, yoon
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch
none
Patch
none
Patch noam: review-

Jae Hyun Park
Reported 2014-01-16 01:31:39 PST
After keyframe animation is done, the div with the animation should go back to its intrinsic style. However, current implementation in TextureMapperLayer makes the div to go back to the first keyframe style, and then to its intrinsic style. The above description is more easily understood by the example below. http://black.company100.com/test/bugs/animation.html
Attachments
Patch (2.58 KB, patch)
2014-01-16 01:41 PST, Jae Hyun Park
no flags
Patch (3.71 KB, patch)
2014-01-20 17:45 PST, Jae Hyun Park
no flags
Patch (3.68 KB, patch)
2014-01-22 21:01 PST, Jae Hyun Park
noam: review-
Jae Hyun Park
Comment 1 2014-01-16 01:41:16 PST
Jae Hyun Park
Comment 2 2014-01-20 17:45:58 PST
Jae Hyun Park
Comment 3 2014-01-22 21:01:28 PST
Gwang Yoon Hwang
Comment 4 2014-01-22 22:03:20 PST
I think this patch is okay. What I understand the original code is trying to apply intrinsic styles to layers after the end of the animation. And the problem is we cannot know the exact intrinsic style of the layer at TextureMapperLayer. Since the computed value will be updated from GraphicsLayer after the end of the animation, we do not need to assume(?) intrinsic style of the layer without active animations in TextureMapperLayer::syncAnimations().
Noam Rosenthal
Comment 5 2014-01-23 04:11:32 PST
Comment on attachment 221943 [details] Patch Needs test.
Jae Hyun Park
Comment 6 2014-01-23 05:24:47 PST
(In reply to comment #5) > (From update of attachment 221943 [details]) > Needs test. It's pretty hard to make a test case for this, because it is a timing issue. If TextureMapperLayer::syncAnimations() was called when the animation was at StoppedState, it will apply the style of the first keyframe animation. Then, the intrinsic style of the element will be set via TextureMapperLayer::setTransform/Opacity/Filters and the animation will be removed. So, when the next syncAnimations() is called, the intrinsic style of the element is applied. However, in most cases, when animation is at StoppedState, the intrinsic style of the element is set immediately via TextureMapperLayer::setTransform/Opacity/Filters and the animation is removed. So, when TextureMapperLayer::syncAnimations() is called, it will apply the intrinsic style of the element right away. The problem is easily reproducible in slow devices, or if the javascript execution is frequent during the keyframe animation. Do you have any suggestion on how to make a test case for such timing issue cases?
Hyowon Kim
Comment 7 2014-04-21 00:06:02 PDT
Hi, Jaehyun. I'm looking forward to landing this patch. Coordinated Graphics has a same flickering issue, which is to show up the first frame of css animation when the animation is at StoppedState. It's easy to reproduce on the EFL MiniBrowser. testcase: http://www.apple.com/html5/showcase/transitions/ I hope this patch is reviewed and applied. Thanks.
Note You need to log in before you can comment on or make changes to this bug.