Index: Source/web/WebViewImpl.cpp |
diff --git a/Source/web/WebViewImpl.cpp b/Source/web/WebViewImpl.cpp |
index 29bedfed385f4fade1598571b65a6635de499ce3..a225e26c4f245e09f76e7cf23632df888b514335 100644 |
--- a/Source/web/WebViewImpl.cpp |
+++ b/Source/web/WebViewImpl.cpp |
@@ -1561,7 +1561,7 @@ void WebViewImpl::resize(const WebSize& newSize) |
if (webFrame->frameView()) { |
webFrame->frameView()->resize(m_size); |
if (page()->settings().pinchVirtualViewportEnabled()) |
- page()->frameHost().pinchViewport().setViewportSize(m_size); |
+ page()->frameHost().pinchViewport().setSize(m_size); |
} |
if (settings()->viewportEnabled() && !m_fixedLayoutSizeLock) { |
@@ -3636,7 +3636,7 @@ void WebViewImpl::setRootGraphicsLayer(GraphicsLayer* layer) |
if (pinchVirtualViewportEnabled) { |
PinchViewport& pinchViewport = page()->frameHost().pinchViewport(); |
pinchViewport.attachToLayerTree(layer, graphicsLayerFactory()); |
- pinchViewport.setViewportSize(mainFrameImpl()->frame()->view()->frameRect().size()); |
+ pinchViewport.setSize(mainFrameImpl()->frame()->view()->frameRect().size()); |
if (layer) { |
m_rootGraphicsLayer = pinchViewport.rootGraphicsLayer(); |
m_rootLayer = pinchViewport.rootGraphicsLayer()->platformLayer(); |
@@ -3662,7 +3662,7 @@ void WebViewImpl::setRootGraphicsLayer(GraphicsLayer* layer) |
// We register viewport layers here since there may not be a layer |
// tree view prior to this point. |
if (pinchVirtualViewportEnabled) { |
- page()->frameHost().pinchViewport().registerViewportLayersWithTreeView(m_layerTreeView); |
+ page()->frameHost().pinchViewport().registerLayersWithTreeView(m_layerTreeView); |
} else { |
GraphicsLayer* rootScrollLayer = compositor()->scrollLayer(); |
ASSERT(rootScrollLayer); |
@@ -3672,7 +3672,7 @@ void WebViewImpl::setRootGraphicsLayer(GraphicsLayer* layer) |
} else { |
m_layerTreeView->clearRootLayer(); |
if (pinchVirtualViewportEnabled) |
- page()->frameHost().pinchViewport().clearViewportLayersForTreeView(m_layerTreeView); |
+ page()->frameHost().pinchViewport().clearLayersForTreeView(m_layerTreeView); |
else |
m_layerTreeView->clearViewportLayers(); |
} |
@@ -3828,6 +3828,17 @@ void WebViewImpl::applyScrollAndScale(const WebSize& scrollDelta, float pageScal |
if (!mainFrameImpl() || !mainFrameImpl()->frameView()) |
return; |
+ // With virtual viewport we need only set the scale (see TODO below). |
+ if (page()->settings().pinchVirtualViewportEnabled()) { |
+ WebSize scrollOffset = mainFrame()->scrollOffset(); |
+ WebPoint scrollPoint(scrollOffset.width, scrollOffset.height); |
+ setPageScaleFactor(pageScaleFactor() * pageScaleDelta, scrollPoint); |
+ m_doubleTapZoomPending = false; |
+ return; |
+ } |
+ |
+ // TODO(bokan): Old pinch path only - virtual viewport pinch scrolls are automatically updated via GraphicsLayer::DidScroll. |
+ // this should be removed once old pinch is removed. |
if (pageScaleDelta == 1) { |
TRACE_EVENT_INSTANT2("webkit", "WebViewImpl::applyScrollAndScale::scrollBy", "x", scrollDelta.width, "y", scrollDelta.height); |
WebSize webScrollOffset = mainFrame()->scrollOffset(); |