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 |