Bug 190690

Summary: Flakey behavior when an opacity transition ends
Product: WebKit Reporter: Simon Fraser (smfr) <simon.fraser>
Component: AnimationsAssignee: Nobody <webkit-unassigned>
Status: NEW    
Severity: Normal CC: dino, graouts, simon.fraser
Priority: P2    
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Testcase none

Simon Fraser (smfr)
Reported 2018-10-17 15:02:26 PDT
Created attachment 352649 [details] Testcase I'm having issues with a flakey test (compositing/geometry/limit-layer-bounds-opacity-transition.html; attached) when working on the patch from bug 90342. What I see is when the transition ends, we don't always remove the RenderLayer, because in RenderBox::requiresLayer(), hasRunningAcceleratedAnimations() is true. In the good case, the list of animated elements gets updated here: * frame #0: 0x00000006e758ee0b WebCore`WebCore::DocumentTimeline::updateListOfElementsWithRunningAcceleratedAnimationsForElement(this=0x00000006fd0af300, element=0x0000000702f00138) at DocumentTimeline.cpp:429 frame #1: 0x00000006e758f05f WebCore`WebCore::DocumentTimeline::animationAcceleratedRunningStateDidChange(this=0x00000006fd0af300, animation=0x00000006fd0e3540) at DocumentTimeline.cpp:422 frame #2: 0x00000006e7597f48 WebCore`WebCore::WebAnimation::acceleratedStateDidChange(this=0x00000006fd0e3540) at WebAnimation.cpp:1091 frame #3: 0x00000006e7597e91 WebCore`WebCore::KeyframeEffectReadOnly::addPendingAcceleratedAction(this=0x00000006fd0e4630, action=Stop) at KeyframeEffectReadOnly.cpp:1253 frame #4: 0x00000006e7596b64 WebCore`WebCore::KeyframeEffectReadOnly::updateAcceleratedAnimationState(this=0x00000006fd0e4630) at KeyframeEffectReadOnly.cpp:1230 frame #5: 0x00000006e759695c WebCore`WebCore::KeyframeEffectReadOnly::apply(this=0x00000006fd0e4630, targetStyle=0x0000000701a70d80) at KeyframeEffectReadOnly.cpp:982 frame #6: 0x00000006e759e4aa WebCore`WebCore::WebAnimation::resolve(this=0x00000006fd0e3540, targetStyle=0x0000000701a70d80) at WebAnimation.cpp:1074 frame #7: 0x00000006e756d829 WebCore`WebCore::CSSTransition::resolve(this=0x00000006fd0e3540, targetStyle=0x0000000701a70d80) at CSSTransition.cpp:55 frame #8: 0x00000006e758f5ee WebCore`WebCore::DocumentTimeline::resolveAnimationsForElement(this=0x00000006fd0af300, element=0x0000000702f00138, targetStyle=0x0000000701a70d80) at DocumentTimeline.cpp:465 frame #9: 0x00000006e90a132b WebCore`WebCore::Style::TreeResolver::createAnimatedElementUpdate(this=0x00007ffee6d32f00, newStyle=unique_ptr<WebCore::RenderStyle, std::__1::default_delete<WebCore::RenderStyle> > @ 0x00007ffee6d2fac0, element=0x0000000702f00138, parentChange=NoChange) at StyleTreeResolver.cpp:309 frame #10: 0x00000006e90a0547 WebCore`WebCore::Style::TreeResolver::resolveElement(this=0x00007ffee6d32f00, element=0x0000000702f00138) at StyleTreeResolver.cpp:213 frame #11: 0x00000006e90a3084 WebCore`WebCore::Style::TreeResolver::resolveComposedTree(this=0x00007ffee6d32f00) at StyleTreeResolver.cpp:498 frame #12: 0x00000006e90a48f1 WebCore`WebCore::Style::TreeResolver::resolve(this=0x00007ffee6d32f00) at StyleTreeResolver.cpp:556 frame #13: 0x00000006e7afef65 WebCore`WebCore::Document::resolveStyle(this=0x0000000701c02120, type=Normal) at Document.cpp:1904 frame #14: 0x00000006e7b00a8d WebCore`WebCore::Document::updateStyleIfNeeded(this=0x0000000701c02120) at Document.cpp:2025 frame #15: 0x00000006e758d5a8 WebCore`WebCore::DocumentTimeline::updateAnimations(this=0x00000006fd0af300) at DocumentTimeline.cpp:322 frame #16: 0x00000006e758b3e5 WebCore`WebCore::DocumentTimeline::documentAnimationSchedulerDidFire(this=0x00000006fd0af300) at DocumentTimeline.cpp:292 frame #17: 0x00000006e758b31f WebCore`WebCore::DocumentAnimationScheduler::displayRefreshFired(this=0x0000000701a7a888) at DocumentAnimationScheduler.cpp:89 In the bad case, we never even hit updateListOfElementsWithRunningAcceleratedAnimationsForElement(). Good: 14:53:53.138 78416 GraphicsLayerCA 0x17f7d58c0 platformCALayerAnimationEnded keyframe-effect-13c65603-c439-4b93-9e1f-3f4dcadd4590_2_0_0 14:53:53.138 78416 DocumentAnimationScheduler 0x183f2c8f8 displayRefreshFired() 14:53:53.138 78416 DocumentTimeline 0x17f5c9300 updateAnimations() 14:53:53.138 78416 updating style 14:53:53.138 78416 DocumentTimeline 0x17f5c9300 updateListOfElementsWithRunningAcceleratedAnimationsForElement 0x1860009c0 14:53:53.138 78416 DocumentTimeline 0x17f5c9300 runningAnimationsForElementAreAllAccelerated 0x1860009c0: 0 14:53:53.138 78416 RenderLayerModelObject 0x187300fc0 (layer 0x185b9e690) styleDidChange diff 8 opacity 1 (requires layer 0) 14:53:53.138 78416 DocumentTimeline 0x17f5c9300 runningAnimationsForElementAreAllAccelerated 0x1860009c0: 0 14:53:53.138 78416 RenderLayer 0x185b9e690 removeOnlyThisLayer 14:53:53.138 78416 RenderLayer 0x185b9ed20 updateLayerPositionsAfterLayout Bad: 14:53:54.557 78416 GraphicsLayerCA 0x17f7c58c0 platformCALayerAnimationEnded keyframe-effect-ffa21c3c-149f-43ee-ad47-184ef4d9227a_2_0_0 14:53:54.557 78416 DocumentAnimationScheduler 0x185ba4ce8 displayRefreshFired() 14:53:54.557 78416 DocumentTimeline 0x183f72c00 updateAnimations() 14:53:54.557 78416 updating style 14:53:54.557 78416 DocumentTimeline 0x183f72c00 runningAnimationsForElementAreAllAccelerated 0x186000af8: 1 14:53:54.557 78416 RenderLayerModelObject 0x1873018c0 (layer 0x17f574e70) styleDidChange diff 8 opacity 1 (requires layer 1) 14:53:54.558 78416 DocumentTimeline 0x183f72c00 runningAnimationsForElementAreAllAccelerated 0x186000af8: 1 14:53:54.558 78416 RenderLayer 0x17f574e70 styleChanged - opacity is 1.000000 14:53:54.558 78416 DocumentTimeline 0x183f72c00 runningAnimationsForElementAreAllAccelerated 0x186000af8: 1
Attachments
Testcase (1.54 KB, text/html)
2018-10-17 15:02 PDT, Simon Fraser (smfr)
no flags
Note You need to log in before you can comment on or make changes to this bug.