| Index: Source/WebKit/chromium/src/WebViewImpl.cpp
|
| diff --git a/Source/WebKit/chromium/src/WebViewImpl.cpp b/Source/WebKit/chromium/src/WebViewImpl.cpp
|
| index 578b76c17a80d98efee822adaa32e8f019c61739..65b290a37245769806600cd142817728ab34306a 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"
|
| @@ -149,7 +150,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"
|
| @@ -1612,8 +1612,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()) {
|
| @@ -3815,8 +3818,25 @@ 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);
|
| +
|
| + if (m_pinchViewports) {
|
| + m_pinchViewports->setOverflowControlsHostLayer(layer);
|
| + if (layer) {
|
| + m_rootGraphicsLayer = m_pinchViewports->rootGraphicsLayer();
|
| + m_rootLayer = m_pinchViewports->rootGraphicsLayer()->platformLayer();
|
| + m_pinchViewports->registerViewportLayersWithTreeView(m_layerTreeView);
|
| + } else {
|
| + m_rootGraphicsLayer = 0;
|
| + m_rootLayer = 0;
|
| + m_pinchViewports->clearViewportLayersForTreeView(m_layerTreeView);
|
| + }
|
| + } else {
|
| + m_rootGraphicsLayer = layer;
|
| + m_rootLayer = layer ? layer->platformLayer() : 0;
|
| + }
|
| +
|
|
|
| setIsAcceleratedCompositingActive(layer);
|
|
|
| @@ -3854,6 +3874,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)
|
|
|