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 5365c9a14aeff2dccee027e15574896ce09934aa..4998d018a4b0aa5acf4cb15650c0c993af9e3956 100644 |
--- a/third_party/WebKit/Source/web/WebFrameWidgetImpl.cpp |
+++ b/third_party/WebKit/Source/web/WebFrameWidgetImpl.cpp |
@@ -48,8 +48,10 @@ |
#include "core/page/FocusController.h" |
#include "core/page/Page.h" |
#include "platform/KeyboardCodes.h" |
+#include "platform/graphics/CompositorMutatorClient.h" |
#include "public/platform/WebFrameScheduler.h" |
#include "public/web/WebWidgetClient.h" |
+#include "web/CompositorMutatorImpl.h" |
#include "web/CompositorProxyClientImpl.h" |
#include "web/ContextMenuAllowedScope.h" |
#include "web/WebDevToolsAgentImpl.h" |
@@ -90,6 +92,7 @@ WebFrameWidgetsSet& WebFrameWidgetImpl::allInstances() |
WebFrameWidgetImpl::WebFrameWidgetImpl(WebWidgetClient* client, WebLocalFrame* localRoot) |
: m_client(client) |
, m_localRoot(toWebLocalFrameImpl(localRoot)) |
+ , m_mutator(nullptr) |
, m_layerTreeView(nullptr) |
, m_rootLayer(nullptr) |
, m_rootGraphicsLayer(nullptr) |
@@ -133,6 +136,7 @@ void WebFrameWidgetImpl::close() |
// deleted. |
m_client = nullptr; |
+ m_mutator = nullptr; |
m_layerTreeView = nullptr; |
m_rootLayer = nullptr; |
m_rootGraphicsLayer = nullptr; |
@@ -405,7 +409,12 @@ void WebFrameWidgetImpl::scheduleAnimation() |
CompositorProxyClient* WebFrameWidgetImpl::createCompositorProxyClient() |
{ |
- return new CompositorProxyClientImpl(); |
+ if (!m_mutator) { |
+ std::unique_ptr<CompositorMutatorClient> mutatorClient = CompositorMutatorImpl::createClient(); |
+ m_mutator = static_cast<CompositorMutatorImpl*>(mutatorClient->mutator()); |
+ m_layerTreeView->setMutatorClient(std::move(mutatorClient)); |
+ } |
+ return new CompositorProxyClientImpl(m_mutator); |
} |
void WebFrameWidgetImpl::applyViewportDeltas( |
@@ -625,6 +634,7 @@ void WebFrameWidgetImpl::willCloseLayerTreeView() |
page()->willCloseLayerTreeView(*m_layerTreeView); |
setIsAcceleratedCompositingActive(false); |
+ m_mutator = nullptr; |
m_layerTreeView = nullptr; |
m_layerTreeViewClosed = true; |
} |
@@ -997,6 +1007,7 @@ Element* WebFrameWidgetImpl::focusedElement() const |
void WebFrameWidgetImpl::initializeLayerTreeView() |
{ |
if (m_client) { |
+ DCHECK(!m_mutator); |
m_client->initializeLayerTreeView(); |
m_layerTreeView = m_client->layerTreeView(); |
} |