Chromium Code Reviews| Index: Source/core/rendering/RenderObject.cpp |
| diff --git a/Source/core/rendering/RenderObject.cpp b/Source/core/rendering/RenderObject.cpp |
| index 376a739140520cab245ee520d644e3c46b0efdc8..251c125da449391bde4c97df5798592fc2827ab1 100644 |
| --- a/Source/core/rendering/RenderObject.cpp |
| +++ b/Source/core/rendering/RenderObject.cpp |
| @@ -30,6 +30,7 @@ |
| #include "HTMLNames.h" |
| #include "RuntimeEnabledFeatures.h" |
| #include "core/accessibility/AXObjectCache.h" |
| +#include "core/animation/ActiveAnimations.h" |
| #include "core/css/resolver/StyleResolver.h" |
| #include "core/editing/EditingBoundary.h" |
| #include "core/editing/FrameSelection.h" |
| @@ -1725,10 +1726,18 @@ void RenderObject::handleDynamicFloatPositionChange() |
| void RenderObject::setAnimatableStyle(PassRefPtr<RenderStyle> style) |
| { |
| - if (!isText() && style && !RuntimeEnabledFeatures::webAnimationsCSSEnabled()) |
| - setStyle(animation()->updateAnimations(this, style.get())); |
| - else |
| + if (!isText() && style) { |
| + if (RuntimeEnabledFeatures::webAnimationsCSSEnabled() && node() && node()->isElementNode()) { |
| + Element* element = toElement(node()); |
| + if (CSSAnimations::needsUpdate(element, style.get())) |
| + element->ensureActiveAnimations()->cssAnimations()->update(element, style.get()); |
| + setStyle(style); |
| + } else { |
| + setStyle(animation()->updateAnimations(this, style.get())); |
|
Steve Block
2013/08/06 03:57:01
Is this 'else' correct? Surely we never want to do
dstockwell
2013/08/06 05:43:25
Fixed.
|
| + } |
| + } else { |
| setStyle(style); |
| + } |
| } |
| StyleDifference RenderObject::adjustStyleDifference(StyleDifference diff, unsigned contextSensitiveProperties) const |