From 45dee41f5c55cd18c7f3716fbac765016132a214 Mon Sep 17 00:00:00 2001 From: Grace Kloba <> Date: Mon, 6 Apr 2009 10:47:26 -0700 Subject: [PATCH] AI 144661: Fix #175030. Preserve the zoom factor during refresh. Remove the code change in FrameLoader.cpp which was to preserve the zoom factor when we first did layout. Now we only use the initialZoomScale if it is a standard load. If it is history load, restoreScale() should be called before didFirstLayout(), in the other cases, like reload, refresh, replace, we don't change the zoom factor. BUG=175030 Automated import of CL 144661 --- core/java/android/webkit/WebView.java | 1 + core/java/android/webkit/WebViewCore.java | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index f6ad79340f6f3..b5f2efc4d4103 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -4654,6 +4654,7 @@ public class WebView extends AbsoluteLayout if (mInitialScale > 0) { scale = mInitialScale / 100.0f; } else { + if (initialScale < 0) break; if (mWebViewCore.getSettings().getUseWideViewPort()) { // force viewSizeChanged by setting mLastWidthSent // to 0 diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java index 72b30f65f1f5a..9c00e7f56ee3d 100644 --- a/core/java/android/webkit/WebViewCore.java +++ b/core/java/android/webkit/WebViewCore.java @@ -1518,7 +1518,7 @@ final class WebViewCore { private native void setViewportSettingsFromNative(); // called by JNI - private void didFirstLayout() { + private void didFirstLayout(boolean standardLoad) { // Trick to ensure that the Picture has the exact height for the content // by forcing to layout with 0 height after the page is ready, which is // indicated by didFirstLayout. This is essential to get rid of the @@ -1584,8 +1584,11 @@ final class WebViewCore { scaleLimit).sendToTarget(); mRestoredScale = 0; } else { + // if standardLoad is true, use mViewportInitialScale, otherwise + // pass -1 to the WebView to indicate no change of the scale. Message.obtain(mWebView.mPrivateHandler, - WebView.DID_FIRST_LAYOUT_MSG_ID, mViewportInitialScale, + WebView.DID_FIRST_LAYOUT_MSG_ID, + standardLoad ? mViewportInitialScale : -1, mViewportWidth, scaleLimit).sendToTarget(); }