Index: third_party/WebKit/Source/web/WebFrameWidgetImpl.cpp |
diff --git a/third_party/WebKit/Source/web/WebFrameWidgetImpl.cpp b/third_party/WebKit/Source/web/WebFrameWidgetImpl.cpp |
index d220f3afbe2aaded5a94cbb4ceb7523e96c46769..d5d03a1a138898d2cb06eb6e961eeb067fbe3151 100644 |
--- a/third_party/WebKit/Source/web/WebFrameWidgetImpl.cpp |
+++ b/third_party/WebKit/Source/web/WebFrameWidgetImpl.cpp |
@@ -52,6 +52,7 @@ |
#include "core/page/PointerLockController.h" |
#include "platform/KeyboardCodes.h" |
#include "platform/WebFrameScheduler.h" |
+#include "platform/animation/CompositorAnimationHost.h" |
#include "platform/graphics/CompositorMutatorClient.h" |
#include "public/web/WebAutofillClient.h" |
#include "public/web/WebPlugin.h" |
@@ -152,6 +153,7 @@ void WebFrameWidgetImpl::close() { |
m_layerTreeView = nullptr; |
m_rootLayer = nullptr; |
m_rootGraphicsLayer = nullptr; |
+ m_compositorAnimationHost = nullptr; |
m_selfKeepAlive.clear(); |
} |
@@ -684,6 +686,7 @@ void WebFrameWidgetImpl::willCloseLayerTreeView() { |
setIsAcceleratedCompositingActive(false); |
m_mutator = nullptr; |
m_layerTreeView = nullptr; |
+ m_compositorAnimationHost = nullptr; |
m_layerTreeViewClosed = true; |
} |
@@ -1002,6 +1005,10 @@ void WebFrameWidgetImpl::initializeLayerTreeView() { |
DCHECK(!m_mutator); |
m_client->initializeLayerTreeView(); |
m_layerTreeView = m_client->layerTreeView(); |
+ if (m_layerTreeView && m_layerTreeView->compositorAnimationHost()) { |
+ m_compositorAnimationHost = WTF::makeUnique<CompositorAnimationHost>( |
+ m_layerTreeView->compositorAnimationHost()); |
+ } |
} |
if (WebDevToolsAgentImpl* devTools = m_localRoot->devToolsAgentImpl()) |
@@ -1087,16 +1094,14 @@ void WebFrameWidgetImpl::setRootLayer(WebLayer* layer) { |
void WebFrameWidgetImpl::attachCompositorAnimationTimeline( |
CompositorAnimationTimeline* compositorTimeline) { |
- if (m_layerTreeView) |
- m_layerTreeView->attachCompositorAnimationTimeline( |
- compositorTimeline->animationTimeline()); |
+ if (m_compositorAnimationHost) |
+ m_compositorAnimationHost->addTimeline(*compositorTimeline); |
} |
void WebFrameWidgetImpl::detachCompositorAnimationTimeline( |
CompositorAnimationTimeline* compositorTimeline) { |
- if (m_layerTreeView) |
- m_layerTreeView->detachCompositorAnimationTimeline( |
- compositorTimeline->animationTimeline()); |
+ if (m_compositorAnimationHost) |
+ m_compositorAnimationHost->removeTimeline(*compositorTimeline); |
} |
HitTestResult WebFrameWidgetImpl::coreHitTestResultAt( |