Index: third_party/WebKit/Source/core/animation/Animation.cpp |
diff --git a/third_party/WebKit/Source/core/animation/Animation.cpp b/third_party/WebKit/Source/core/animation/Animation.cpp |
index af5fdce15eb55b9ed1d6e028a1e8068be0649b55..6950a9261e13653e1fdaef41837d5532bad0322a 100644 |
--- a/third_party/WebKit/Source/core/animation/Animation.cpp |
+++ b/third_party/WebKit/Source/core/animation/Animation.cpp |
@@ -43,6 +43,7 @@ |
#include "core/events/AnimationPlaybackEvent.h" |
#include "core/frame/UseCounter.h" |
#include "core/inspector/InspectorTraceEvents.h" |
+#include "core/paint/PaintLayer.h" |
#include "core/probe/CoreProbes.h" |
#include "platform/RuntimeEnabledFeatures.h" |
#include "platform/ScriptForbiddenScope.h" |
@@ -752,11 +753,19 @@ bool Animation::CanStartAnimationOnCompositor( |
if (!target_element) |
return false; |
- CompositorElementId target_element_id = CompositorElementIdFromDOMNodeId( |
- DOMNodeIds::IdForNode(target_element), |
- CompositorElementIdNamespace::kPrimary); |
- if (!composited_element_ids->Contains(target_element_id)) |
+ if (target_element->GetLayoutObject() && |
+ target_element->GetLayoutObject()->IsBoxModelObject() && |
+ target_element->GetLayoutObject()->HasLayer()) { |
+ PaintLayer* paint_layer = |
+ ToLayoutBoxModelObject(target_element->GetLayoutObject())->Layer(); |
+ CompositorElementId target_element_id = |
+ CompositorElementIdFromPaintLayerId( |
+ paint_layer->UniqueId(), CompositorElementIdNamespace::kPrimary); |
+ if (!composited_element_ids->Contains(target_element_id)) |
+ return false; |
+ } else { |
return false; |
+ } |
} |
return Playing(); |