Index: Source/web/WebViewImpl.cpp |
diff --git a/Source/web/WebViewImpl.cpp b/Source/web/WebViewImpl.cpp |
index 0b51201eacc6342ef32be2a79747870292683e5f..33e54e8dfd1c71773f0a31c36864a74e9e39d67e 100644 |
--- a/Source/web/WebViewImpl.cpp |
+++ b/Source/web/WebViewImpl.cpp |
@@ -1640,15 +1640,13 @@ void WebViewImpl::resize(const WebSize& newSize) |
if (!view) |
return; |
- WebSize oldSize = m_size; |
+ bool shouldAnchorAndRescaleViewport = settings()->mainFrameResizesAreOrientationChanges() |
+ && m_size.width && contentsSize().width() && newSize.width != m_size.width && !m_fullscreenController->isFullscreen(); |
float oldPageScaleFactor = pageScaleFactor(); |
- int oldContentsWidth = contentsSize().width(); |
+ float oldMinimumPageScaleFactor = minimumPageScaleFactor(); |
m_size = newSize; |
- bool shouldAnchorAndRescaleViewport = settings()->mainFrameResizesAreOrientationChanges() |
- && oldSize.width && oldContentsWidth && newSize.width != oldSize.width && !m_fullscreenController->isFullscreen(); |
- |
ViewportAnchor viewportAnchor(&localFrameRootTemporary()->frame()->eventHandler()); |
if (shouldAnchorAndRescaleViewport) { |
viewportAnchor.setAnchor(view->visibleContentRect(), |
@@ -1671,20 +1669,10 @@ void WebViewImpl::resize(const WebSize& newSize) |
view->layout(); |
if (shouldAnchorAndRescaleViewport) { |
- float viewportWidthRatio = static_cast<float>(newSize.width) / oldSize.width; |
- float contentsWidthRatio = static_cast<float>(contentsSize().width()) / oldContentsWidth; |
- float scaleMultiplier = viewportWidthRatio / contentsWidthRatio; |
- |
- IntSize viewportSize = view->visibleContentRect().size(); |
- if (scaleMultiplier != 1) { |
- float newPageScaleFactor = oldPageScaleFactor * scaleMultiplier; |
- viewportSize.scale(pageScaleFactor() / newPageScaleFactor); |
- IntPoint scrollOffsetAtNewScale = viewportAnchor.computeOrigin(viewportSize); |
- setPageScaleFactor(newPageScaleFactor, scrollOffsetAtNewScale); |
- } else { |
- IntPoint scrollOffsetAtNewScale = clampOffsetAtScale(viewportAnchor.computeOrigin(viewportSize), pageScaleFactor()); |
- updateMainFrameScrollPosition(scrollOffsetAtNewScale, false); |
- } |
+ float newPageScaleFactor = oldPageScaleFactor / oldMinimumPageScaleFactor * minimumPageScaleFactor(); |
+ IntSize scaledViewportSize = newSize; |
+ scaledViewportSize.scale(1 / newPageScaleFactor); |
+ setPageScaleFactor(newPageScaleFactor, viewportAnchor.computeOrigin(scaledViewportSize)); |
} |
} |