| Index: third_party/WebKit/Source/core/animation/CompositorAnimations.cpp
|
| diff --git a/third_party/WebKit/Source/core/animation/CompositorAnimations.cpp b/third_party/WebKit/Source/core/animation/CompositorAnimations.cpp
|
| index 9d5d85e30ca47781d29a13fbad83c62fabf48a72..09fb12473c475cf30248bb469add073690b8fb97 100644
|
| --- a/third_party/WebKit/Source/core/animation/CompositorAnimations.cpp
|
| +++ b/third_party/WebKit/Source/core/animation/CompositorAnimations.cpp
|
| @@ -37,7 +37,6 @@
|
| #include "core/animation/animatable/AnimatableFilterOperations.h"
|
| #include "core/animation/animatable/AnimatableTransform.h"
|
| #include "core/animation/animatable/AnimatableValue.h"
|
| -#include "core/dom/DOMNodeIds.h"
|
| #include "core/layout/LayoutBoxModelObject.h"
|
| #include "core/layout/LayoutObject.h"
|
| #include "core/layout/compositing/CompositedLayerMapping.h"
|
| @@ -377,13 +376,39 @@
|
| compositorPlayer->pauseAnimation(id, pauseTime);
|
| }
|
|
|
| -void CompositorAnimations::attachCompositedLayers(Element& element, const Animation& animation)
|
| +bool CompositorAnimations::canAttachCompositedLayers(const Element& element, const Animation& animation)
|
| {
|
| if (!animation.compositorPlayer())
|
| - return;
|
| + return false;
|
| +
|
| + if (!element.layoutObject() || !element.layoutObject()->isBoxModelObject())
|
| + return false;
|
| +
|
| + PaintLayer* layer = toLayoutBoxModelObject(element.layoutObject())->layer();
|
| +
|
| + if (!layer || !layer->isAllowedToQueryCompositingState()
|
| + || !layer->compositedLayerMapping()
|
| + || !layer->compositedLayerMapping()->mainGraphicsLayer())
|
| + return false;
|
| +
|
| + if (!layer->compositedLayerMapping()->mainGraphicsLayer()->platformLayer())
|
| + return false;
|
| +
|
| + return true;
|
| +}
|
| +
|
| +void CompositorAnimations::attachCompositedLayers(const Element& element, const Animation& animation)
|
| +{
|
| + ASSERT(element.layoutObject());
|
| +
|
| + PaintLayer* layer = toLayoutBoxModelObject(element.layoutObject())->layer();
|
| + ASSERT(layer);
|
|
|
| CompositorAnimationPlayer* compositorPlayer = animation.compositorPlayer();
|
| - compositorPlayer->attachElement(createCompositorElementId(DOMNodeIds::idForNode(&element), CompositorSubElementId::Primary));
|
| + ASSERT(compositorPlayer);
|
| +
|
| + ASSERT(layer->compositedLayerMapping());
|
| + compositorPlayer->attachLayer(layer->compositedLayerMapping()->mainGraphicsLayer()->platformLayer());
|
| }
|
|
|
| bool CompositorAnimations::convertTimingForCompositor(const Timing& timing, double timeOffset, CompositorTiming& out, double animationPlaybackRate)
|
|
|