bool AnimationControllerPrivate::isRunningAcceleratedAnimationOnRenderer(RenderElement& renderer, CSSPropertyID property, AnimationBase::RunningState runningState) const { ASSERT(renderer.isCSSAnimating()); ASSERT(m_compositeAnimations.contains(&renderer)); const CompositeAnimation& animation = *m_compositeAnimations.get(&renderer); return animation.isAnimatingProperty(property, true, runningState); }
bool AnimationControllerPrivate::clear(RenderElement& renderer) { LOG(Animations, "AnimationControllerPrivate %p clear: %p", this, &renderer); ASSERT(renderer.isCSSAnimating()); ASSERT(m_compositeAnimations.contains(&renderer)); Element* element = renderer.element(); m_eventsToDispatch.removeAllMatching([element] (const EventToDispatch& info) { return info.element == element; }); m_elementChangesToDispatch.removeAllMatching([element](auto& currentElement) { return currentElement.ptr() == element; }); // Return false if we didn't do anything OR we are suspended (so we don't try to // do a setNeedsStyleRecalc() when suspended). RefPtr<CompositeAnimation> animation = m_compositeAnimations.take(&renderer); ASSERT(animation); renderer.setIsCSSAnimating(false); animation->clearRenderer(); return animation->isSuspended(); }
bool AnimationController::computeExtentOfAnimation(RenderElement& renderer, LayoutRect& bounds) const { if (!renderer.isCSSAnimating()) return true; return m_data->computeExtentOfAnimation(renderer, bounds); }
bool AnimationControllerPrivate::computeExtentOfAnimation(RenderElement& renderer, LayoutRect& bounds) const { ASSERT(renderer.isCSSAnimating()); ASSERT(m_compositeAnimations.contains(&renderer)); const CompositeAnimation& rendererAnimations = *m_compositeAnimations.get(&renderer); if (!rendererAnimations.isAnimatingProperty(CSSPropertyTransform, false, AnimationBase::Running | AnimationBase::Paused)) return true; return rendererAnimations.computeExtentOfTransformAnimation(bounds); }
void AnimationController::cancelAnimations(RenderElement& renderer) { if (!renderer.isCSSAnimating()) return; if (!m_data->clear(renderer)) return; Element* element = renderer.element(); ASSERT(!element || !element->document().inPageCache()); if (element) element->setNeedsStyleRecalc(SyntheticStyleChange); }
std::unique_ptr<RenderStyle> AnimationControllerPrivate::getAnimatedStyleForRenderer(RenderElement& renderer) { AnimationPrivateUpdateBlock animationUpdateBlock(*this); ASSERT(renderer.isCSSAnimating()); ASSERT(m_compositeAnimations.contains(&renderer)); const CompositeAnimation& rendererAnimations = *m_compositeAnimations.get(&renderer); std::unique_ptr<RenderStyle> animatingStyle = rendererAnimations.getAnimatedStyle(); if (!animatingStyle) animatingStyle = RenderStyle::clonePtr(renderer.style()); return animatingStyle; }
PassRefPtr<RenderStyle> AnimationControllerPrivate::getAnimatedStyleForRenderer(RenderElement& renderer) { AnimationPrivateUpdateBlock animationUpdateBlock(*this); ASSERT(renderer.isCSSAnimating()); ASSERT(m_compositeAnimations.contains(&renderer)); const CompositeAnimation& rendererAnimations = *m_compositeAnimations.get(&renderer); RefPtr<RenderStyle> animatingStyle = rendererAnimations.getAnimatedStyle(); if (!animatingStyle) animatingStyle = &renderer.style(); return animatingStyle.release(); }
void AnimationController::cancelAnimations(RenderElement& renderer) { if (!renderer.isCSSAnimating()) return; if (!m_data->clear(renderer)) return; Element* element = renderer.element(); if (!element || element->document().renderTreeBeingDestroyed()) return; ASSERT(element->document().pageCacheState() == Document::NotInPageCache); element->invalidateStyleAndLayerComposition(); }
bool AnimationController::isRunningAcceleratedAnimationOnRenderer(RenderElement& renderer, CSSPropertyID property, AnimationBase::RunningState runningState) const { return renderer.isCSSAnimating() && m_data->isRunningAcceleratedAnimationOnRenderer(renderer, property, runningState); }
std::unique_ptr<RenderStyle> AnimationController::getAnimatedStyleForRenderer(RenderElement& renderer) { if (!renderer.isCSSAnimating()) return RenderStyle::clonePtr(renderer.style()); return m_data->getAnimatedStyleForRenderer(renderer); }
PassRefPtr<RenderStyle> AnimationController::getAnimatedStyleForRenderer(RenderElement& renderer) { if (!renderer.isCSSAnimating()) return &renderer.style(); return m_data->getAnimatedStyleForRenderer(renderer); }