haikuwebkit/LayoutTests/animations/body-removal-crash-expected...

2 lines
22 B
Plaintext
Raw Permalink Normal View History

2011-03-21 Dean Jackson <dino@apple.com> Reviewed by Chris Marrin and Simon Fraser. https://bugs.webkit.org/show_bug.cgi?id=56325 ASSERTION FAILED: paused() in AnimationBase::updateStateMachine() AnimationBase had a custom linked-list/self-pointer for keeping track of animations that needed to be notified of style updates and start progress. This caused problems when AnimationBase was destroyed, since the pointer wasn't managed in any way. I replaced these pointers with HashSets and moved the code that removes animations from the sets into AnimationControllerPrivate, where it belongs. CompositeAnimation is also more careful to tell AnimationControllerPrivate when it no longer needs to keep track of waiting animations. This should stop the style updates being called on non-active animations (which was the cause of the state machine error here) and should also stop a few of the related flakey test failures and occasional crashes. Test: animations/body-removal-crash.html * page/animation/AnimationBase.cpp: (WebCore::AnimationBase::AnimationBase): (WebCore::AnimationBase::updateStateMachine): * page/animation/AnimationBase.h: (WebCore::AnimationBase::~AnimationBase): - Remove the linked-list * page/animation/AnimationController.cpp: (WebCore::AnimationControllerPrivate::AnimationControllerPrivate): (WebCore::AnimationControllerPrivate::addToAnimationsWaitingForStyle): (WebCore::AnimationControllerPrivate::removeFromAnimationsWaitingForStyle): (WebCore::AnimationControllerPrivate::styleAvailable): (WebCore::AnimationControllerPrivate::addToAnimationsWaitingForStartTimeResponse): (WebCore::AnimationControllerPrivate::removeFromAnimationsWaitingForStartTimeResponse): (WebCore::AnimationControllerPrivate::startTimeResponse): (WebCore::AnimationControllerPrivate::animationWillBeRemoved): - New method to remove animations from the waiting lists * page/animation/AnimationControllerPrivate.h: - use a HashSet rather than an AnimationBase* pointer. * page/animation/CompositeAnimation.cpp: (WebCore::CompositeAnimation::~CompositeAnimation): (WebCore::CompositeAnimation::clearRenderer): (WebCore::CompositeAnimation::updateTransitions): (WebCore::CompositeAnimation::updateKeyframeAnimations): - remove the animations and transitions from the lists when we know they are no longer active (rather than waiting for the AnimationBase to do it when destructing) 2011-03-21 Dean Jackson <dino@apple.com> Reviewed by Chris Marrin and Simon Fraser. https://bugs.webkit.org/show_bug.cgi?id=56325 ASSERTION FAILED: paused() in AnimationBase::updateStateMachine() Add a test that triggers the assertion by removing the <body> element and re-inserting it. While not directly related to this bug, the transform-origin-vs-functions test would occasionally fail because it depended on the order of events being fired. The update to the way animations are keeping their state triggered this more often. Now the output is sorted before finishing the test. * animations/3d/transform-origin-vs-functions.html: * animations/body-removal-crash.html: Added. * platform/mac/animations/body-removal-crash-expected.checksum: Added. * platform/mac/animations/body-removal-crash-expected.png: Added. * platform/mac/animations/body-removal-crash-expected.txt: Added. Canonical link: https://commits.webkit.org/71453@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@81613 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2011-03-21 22:05:11 +00:00
This should not crash