- Revision
- 243112
- Author
- za...@apple.com
- Date
- 2019-03-18 15:45:47 -0700 (Mon, 18 Mar 2019)
Log Message
Call transition and animation callbacks on non-composited renderers too.
https://bugs.webkit.org/show_bug.cgi?id=195907
Reviewed by Simon Fraser.
These callbacks are not composited specific functions.
* page/animation/AnimationBase.cpp:
(WebCore::AnimationBase::freezeAtTime):
(WebCore::AnimationBase::compositedRenderer const): Deleted.
* page/animation/AnimationBase.h:
* page/animation/ImplicitAnimation.cpp:
(WebCore::ImplicitAnimation::startAnimation):
(WebCore::ImplicitAnimation::pauseAnimation):
(WebCore::ImplicitAnimation::endAnimation):
* page/animation/KeyframeAnimation.cpp:
(WebCore::KeyframeAnimation::startAnimation):
(WebCore::KeyframeAnimation::pauseAnimation):
(WebCore::KeyframeAnimation::endAnimation):
* rendering/RenderLayerModelObject.cpp:
(WebCore::RenderLayerModelObject::startTransition):
(WebCore::RenderLayerModelObject::transitionPaused):
(WebCore::RenderLayerModelObject::transitionFinished):
(WebCore::RenderLayerModelObject::startAnimation):
(WebCore::RenderLayerModelObject::animationPaused):
(WebCore::RenderLayerModelObject::animationSeeked):
(WebCore::RenderLayerModelObject::animationFinished):
(WebCore::RenderLayerModelObject::suspendAnimations):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (243111 => 243112)
--- trunk/Source/WebCore/ChangeLog 2019-03-18 22:42:11 UTC (rev 243111)
+++ trunk/Source/WebCore/ChangeLog 2019-03-18 22:45:47 UTC (rev 243112)
@@ -1,3 +1,34 @@
+2019-03-18 Zalan Bujtas <za...@apple.com>
+
+ Call transition and animation callbacks on non-composited renderers too.
+ https://bugs.webkit.org/show_bug.cgi?id=195907
+
+ Reviewed by Simon Fraser.
+
+ These callbacks are not composited specific functions.
+
+ * page/animation/AnimationBase.cpp:
+ (WebCore::AnimationBase::freezeAtTime):
+ (WebCore::AnimationBase::compositedRenderer const): Deleted.
+ * page/animation/AnimationBase.h:
+ * page/animation/ImplicitAnimation.cpp:
+ (WebCore::ImplicitAnimation::startAnimation):
+ (WebCore::ImplicitAnimation::pauseAnimation):
+ (WebCore::ImplicitAnimation::endAnimation):
+ * page/animation/KeyframeAnimation.cpp:
+ (WebCore::KeyframeAnimation::startAnimation):
+ (WebCore::KeyframeAnimation::pauseAnimation):
+ (WebCore::KeyframeAnimation::endAnimation):
+ * rendering/RenderLayerModelObject.cpp:
+ (WebCore::RenderLayerModelObject::startTransition):
+ (WebCore::RenderLayerModelObject::transitionPaused):
+ (WebCore::RenderLayerModelObject::transitionFinished):
+ (WebCore::RenderLayerModelObject::startAnimation):
+ (WebCore::RenderLayerModelObject::animationPaused):
+ (WebCore::RenderLayerModelObject::animationSeeked):
+ (WebCore::RenderLayerModelObject::animationFinished):
+ (WebCore::RenderLayerModelObject::suspendAnimations):
+
2019-03-18 Jer Noble <jer.no...@apple.com>
Add experimental "alphaChannel" property to VideoConfiguration
Modified: trunk/Source/WebCore/page/animation/AnimationBase.cpp (243111 => 243112)
--- trunk/Source/WebCore/page/animation/AnimationBase.cpp 2019-03-18 22:42:11 UTC (rev 243111)
+++ trunk/Source/WebCore/page/animation/AnimationBase.cpp 2019-03-18 22:45:47 UTC (rev 243112)
@@ -69,14 +69,6 @@
return m_element ? m_element->renderer() : nullptr;
}
-RenderLayerModelObject* AnimationBase::compositedRenderer() const
-{
- auto* renderer = this->renderer();
- if (!renderer || !renderer->isComposited())
- return nullptr;
- return downcast<RenderLayerModelObject>(renderer);
-}
-
void AnimationBase::clear()
{
endAnimation();
@@ -679,7 +671,7 @@
else
m_pauseTime = m_startTime.valueOr(0) + t - m_animation->delay();
- if (auto* renderer = compositedRenderer())
+ if (auto* renderer = this->renderer())
renderer->suspendAnimations(MonotonicTime::fromRawSeconds(m_pauseTime.value()));
}
Modified: trunk/Source/WebCore/page/animation/AnimationBase.h (243111 => 243112)
--- trunk/Source/WebCore/page/animation/AnimationBase.h 2019-03-18 22:42:11 UTC (rev 243111)
+++ trunk/Source/WebCore/page/animation/AnimationBase.h 2019-03-18 22:45:47 UTC (rev 243112)
@@ -39,7 +39,6 @@
class Element;
class FloatRect;
class LayoutRect;
-class RenderLayerModelObject;
class RenderElement;
class RenderStyle;
class TimingFunction;
@@ -62,7 +61,6 @@
Element* element() const { return m_element.get(); }
const RenderStyle& currentStyle() const override;
RenderElement* renderer() const override;
- RenderLayerModelObject* compositedRenderer() const;
void clear();
double duration() const;
Modified: trunk/Source/WebCore/page/animation/ImplicitAnimation.cpp (243111 => 243112)
--- trunk/Source/WebCore/page/animation/ImplicitAnimation.cpp 2019-03-18 22:42:11 UTC (rev 243111)
+++ trunk/Source/WebCore/page/animation/ImplicitAnimation.cpp 2019-03-18 22:45:47 UTC (rev 243112)
@@ -144,7 +144,7 @@
bool ImplicitAnimation::startAnimation(double timeOffset)
{
- if (auto* renderer = compositedRenderer())
+ if (auto* renderer = this->renderer())
return renderer->startTransition(timeOffset, m_animatingProperty, m_fromStyle.get(), m_toStyle.get());
return false;
}
@@ -151,7 +151,7 @@
void ImplicitAnimation::pauseAnimation(double timeOffset)
{
- if (auto* renderer = compositedRenderer())
+ if (auto* renderer = this->renderer())
renderer->transitionPaused(timeOffset, m_animatingProperty);
// Restore the original (unanimated) style
if (!paused())
@@ -160,7 +160,7 @@
void ImplicitAnimation::endAnimation(bool)
{
- if (auto* renderer = compositedRenderer())
+ if (auto* renderer = this->renderer())
renderer->transitionFinished(m_animatingProperty);
}
Modified: trunk/Source/WebCore/page/animation/KeyframeAnimation.cpp (243111 => 243112)
--- trunk/Source/WebCore/page/animation/KeyframeAnimation.cpp 2019-03-18 22:42:11 UTC (rev 243111)
+++ trunk/Source/WebCore/page/animation/KeyframeAnimation.cpp 2019-03-18 22:45:47 UTC (rev 243112)
@@ -291,7 +291,7 @@
bool KeyframeAnimation::startAnimation(double timeOffset)
{
- if (auto* renderer = compositedRenderer())
+ if (auto* renderer = this->renderer())
return renderer->startAnimation(timeOffset, m_animation.ptr(), m_keyframes);
return false;
}
@@ -301,7 +301,7 @@
if (!element())
return;
- if (auto* renderer = compositedRenderer())
+ if (auto* renderer = this->renderer())
renderer->animationPaused(timeOffset, m_keyframes.animationName());
// Restore the original (unanimated) style
@@ -314,7 +314,7 @@
if (!element())
return;
- if (auto* renderer = compositedRenderer())
+ if (auto* renderer = this->renderer())
renderer->animationFinished(m_keyframes.animationName());
// Restore the original (unanimated) style
Modified: trunk/Source/WebCore/rendering/RenderLayerModelObject.cpp (243111 => 243112)
--- trunk/Source/WebCore/rendering/RenderLayerModelObject.cpp 2019-03-18 22:42:11 UTC (rev 243111)
+++ trunk/Source/WebCore/rendering/RenderLayerModelObject.cpp 2019-03-18 22:45:47 UTC (rev 243112)
@@ -285,57 +285,57 @@
bool RenderLayerModelObject::startTransition(double timeOffset, CSSPropertyID propertyId, const RenderStyle* fromStyle, const RenderStyle* toStyle)
{
- ASSERT(hasLayer());
- ASSERT(isComposited());
+ if (!layer() || !layer()->backing())
+ return false;
return layer()->backing()->startTransition(timeOffset, propertyId, fromStyle, toStyle);
}
void RenderLayerModelObject::transitionPaused(double timeOffset, CSSPropertyID propertyId)
{
- ASSERT(hasLayer());
- ASSERT(isComposited());
+ if (!layer() || !layer()->backing())
+ return;
layer()->backing()->transitionPaused(timeOffset, propertyId);
}
void RenderLayerModelObject::transitionFinished(CSSPropertyID propertyId)
{
- ASSERT(hasLayer());
- ASSERT(isComposited());
+ if (!layer() || !layer()->backing())
+ return;
layer()->backing()->transitionFinished(propertyId);
}
bool RenderLayerModelObject::startAnimation(double timeOffset, const Animation* animation, const KeyframeList& keyframes)
{
- ASSERT(hasLayer());
- ASSERT(isComposited());
+ if (!layer() || !layer()->backing())
+ return false;
return layer()->backing()->startAnimation(timeOffset, animation, keyframes);
}
void RenderLayerModelObject::animationPaused(double timeOffset, const String& name)
{
- ASSERT(hasLayer());
- ASSERT(isComposited());
+ if (!layer() || !layer()->backing())
+ return;
layer()->backing()->animationPaused(timeOffset, name);
}
void RenderLayerModelObject::animationSeeked(double timeOffset, const String& name)
{
- ASSERT(hasLayer());
- ASSERT(isComposited());
+ if (!layer() || !layer()->backing())
+ return;
layer()->backing()->animationSeeked(timeOffset, name);
}
void RenderLayerModelObject::animationFinished(const String& name)
{
- ASSERT(hasLayer());
- ASSERT(isComposited());
+ if (!layer() || !layer()->backing())
+ return;
layer()->backing()->animationFinished(name);
}
void RenderLayerModelObject::suspendAnimations(MonotonicTime time)
{
- ASSERT(hasLayer());
- ASSERT(isComposited());
+ if (!layer() || !layer()->backing())
+ return;
layer()->backing()->suspendAnimations(time);
}