Chromium Code Reviews| Index: Source/WebKit/chromium/src/WebViewImpl.cpp |
| diff --git a/Source/WebKit/chromium/src/WebViewImpl.cpp b/Source/WebKit/chromium/src/WebViewImpl.cpp |
| index 8792a6f93b56771340581b347dc000a3592e0af4..184e5a85cc022795ab0ceee41fa0840a52c28437 100644 |
| --- a/Source/WebKit/chromium/src/WebViewImpl.cpp |
| +++ b/Source/WebKit/chromium/src/WebViewImpl.cpp |
| @@ -57,6 +57,7 @@ |
| #include "HTMLNames.h" |
| #include "LinkHighlight.h" |
| #include "PageWidgetDelegate.h" |
| +#include "PinchViewports.h" |
| #include "PopupContainer.h" |
| #include "PrerendererClientImpl.h" |
| #include "SpeechInputClientImpl.h" |
| @@ -148,7 +149,6 @@ |
| #include "core/platform/graphics/chromium/LayerPainterChromium.h" |
| #include "core/platform/graphics/gpu/SharedGraphicsContext3D.h" |
| #include "core/platform/network/ResourceHandle.h" |
| -#include "core/rendering/RenderLayerCompositor.h" |
| #include "core/rendering/RenderView.h" |
| #include "core/rendering/RenderWidget.h" |
| #include "core/rendering/TextAutosizer.h" |
| @@ -1611,8 +1611,11 @@ void WebViewImpl::resize(const WebSize& newSize) |
| agentPrivate->webViewResized(newSize); |
| if (!agentPrivate || !agentPrivate->metricsOverridden()) { |
| WebFrameImpl* webFrame = mainFrameImpl(); |
| - if (webFrame->frameView()) |
| + if (webFrame->frameView()) { |
| webFrame->frameView()->resize(m_size); |
| + if (m_pinchViewports) |
| + m_pinchViewports->setViewportSize(FloatSize(m_size.width, m_size.height)); |
| + } |
| } |
| if (settings()->viewportEnabled()) { |
| @@ -3806,11 +3809,28 @@ void WebViewImpl::setRootGraphicsLayer(GraphicsLayer* layer) |
| { |
| suppressInvalidations(true); |
| - m_rootGraphicsLayer = layer; |
| - m_rootLayer = layer ? layer->platformLayer() : 0; |
| + if (page()->settings()->pinchVirtualViewportEnabled() && !m_pinchViewports) |
| + m_pinchViewports = PinchViewports::create(this); |
|
jamesr
2013/06/14 20:55:46
do you need to tear the pinch viewports down when
wjmaclean
2013/06/17 17:45:27
I don't *think* so, though I could be convinced ot
|
| + |
| + if (m_pinchViewports) { |
| + m_pinchViewports->setOverflowControlsHostLayer(layer); |
| + if (layer) { |
| + m_rootGraphicsLayer = m_pinchViewports->rootGraphicsLayer(); |
| + m_rootLayer = m_pinchViewports->rootGraphicsLayer()->platformLayer(); |
| + } else { |
| + m_rootGraphicsLayer = 0; |
| + m_rootLayer = 0; |
| + } |
| + } else { |
| + m_rootGraphicsLayer = layer; |
| + m_rootLayer = layer ? layer->platformLayer() : 0; |
| + } |
| + |
| setIsAcceleratedCompositingActive(layer); |
| + // FIXME: We also need to tell the layer tree about the pinchViewport layers |
| + // in a follow-on CL. |
| if (m_layerTreeView) { |
| if (m_rootLayer) |
| m_layerTreeView->setRootLayer(*m_rootLayer); |
| @@ -3845,6 +3865,16 @@ WebCore::GraphicsLayerFactory* WebViewImpl::graphicsLayerFactory() const |
| return m_graphicsLayerFactory.get(); |
| } |
| +WebCore::RenderLayerCompositor* WebViewImpl::compositor() const |
| +{ |
| + if (!page() |
| + || !page()->mainFrame() |
| + || !page()->mainFrame()->document() |
| + || !page()->mainFrame()->document()->renderView()) |
| + return 0; |
| + return page()->mainFrame()->document()->renderView()->compositor(); |
| +} |
| + |
| void WebViewImpl::registerForAnimations(WebLayer* layer) |
| { |
| if (m_layerTreeView) |