Loading core/java/android/webkit/BrowserFrame.java +4 −0 Original line number Original line Diff line number Diff line Loading @@ -707,6 +707,10 @@ class BrowserFrame extends Handler { return value.string.toString(); return value.string.toString(); } } private float density() { return mContext.getResources().getDisplayMetrics().density; } //========================================================================== //========================================================================== // native functions // native functions //========================================================================== //========================================================================== Loading core/java/android/webkit/WebView.java +2 −2 Original line number Original line Diff line number Diff line Loading @@ -4868,7 +4868,7 @@ public class WebView extends AbsoluteLayout / draw.mMinPrefWidth; / draw.mMinPrefWidth; mMinZoomScaleFixed = false; mMinZoomScaleFixed = false; } else { } else { mMinZoomScale = mDefaultScale; mMinZoomScale = restoreState.mDefaultScale; mMinZoomScaleFixed = true; mMinZoomScaleFixed = true; } } } else { } else { Loading @@ -4891,7 +4891,7 @@ public class WebView extends AbsoluteLayout && settings.getLoadWithOverviewMode()) { && settings.getLoadWithOverviewMode()) { if (restoreState.mViewScale == 0 if (restoreState.mViewScale == 0 || (restoreState.mMobileSite || (restoreState.mMobileSite && mMinZoomScale < mDefaultScale)) { && mMinZoomScale < restoreState.mDefaultScale)) { mInZoomOverview = true; mInZoomOverview = true; } } } } Loading core/java/android/webkit/WebViewCore.java +37 −20 Original line number Original line Diff line number Diff line Loading @@ -100,6 +100,15 @@ final class WebViewCore { private boolean mViewportUserScalable = true; private boolean mViewportUserScalable = true; /* * range is from 70 to 400. * 0 is a special value means device-dpi. The default scale factor will be * always 100. * -1 means undefined. The default scale factor will be * WebView.DEFAULT_SCALE_PERCENT. */ private int mViewportDensityDpi = -1; private int mRestoredScale = 0; private int mRestoredScale = 0; private int mRestoredScreenWidthScale = 0; private int mRestoredScreenWidthScale = 0; private int mRestoredX = 0; private int mRestoredX = 0; Loading Loading @@ -1539,6 +1548,7 @@ final class WebViewCore { float mMaxScale; float mMaxScale; float mViewScale; float mViewScale; float mTextWrapScale; float mTextWrapScale; float mDefaultScale; int mScrollX; int mScrollX; int mScrollY; int mScrollY; boolean mMobileSite; boolean mMobileSite; Loading Loading @@ -1842,9 +1852,18 @@ final class WebViewCore { // set the viewport settings from WebKit // set the viewport settings from WebKit setViewportSettingsFromNative(); setViewportSettingsFromNative(); // adjust the default scale to match the density // adjust the default scale to match the densityDpi float adjust = 1.0f; if (mViewportDensityDpi == -1) { if (WebView.DEFAULT_SCALE_PERCENT != 100) { if (WebView.DEFAULT_SCALE_PERCENT != 100) { float adjust = (float) WebView.DEFAULT_SCALE_PERCENT / 100.0f; adjust = WebView.DEFAULT_SCALE_PERCENT / 100.0f; } } else if (mViewportDensityDpi > 0) { adjust = (float) mContext.getResources().getDisplayMetrics().densityDpi / mViewportDensityDpi; } int defaultScale = (int) (adjust * 100); if (mViewportInitialScale > 0) { if (mViewportInitialScale > 0) { mViewportInitialScale *= adjust; mViewportInitialScale *= adjust; } } Loading @@ -1854,18 +1873,17 @@ final class WebViewCore { if (mViewportMaximumScale > 0) { if (mViewportMaximumScale > 0) { mViewportMaximumScale *= adjust; mViewportMaximumScale *= adjust; } } } // infer the values if they are not defined. // infer the values if they are not defined. if (mViewportWidth == 0) { if (mViewportWidth == 0) { if (mViewportInitialScale == 0) { if (mViewportInitialScale == 0) { mViewportInitialScale = WebView.DEFAULT_SCALE_PERCENT; mViewportInitialScale = defaultScale; } } } } if (mViewportUserScalable == false) { if (mViewportUserScalable == false) { mViewportInitialScale = WebView.DEFAULT_SCALE_PERCENT; mViewportInitialScale = defaultScale; mViewportMinimumScale = WebView.DEFAULT_SCALE_PERCENT; mViewportMinimumScale = defaultScale; mViewportMaximumScale = WebView.DEFAULT_SCALE_PERCENT; mViewportMaximumScale = defaultScale; } } if (mViewportMinimumScale > mViewportInitialScale if (mViewportMinimumScale > mViewportInitialScale && mViewportInitialScale != 0) { && mViewportInitialScale != 0) { Loading @@ -1875,8 +1893,7 @@ final class WebViewCore { && mViewportMaximumScale < mViewportInitialScale) { && mViewportMaximumScale < mViewportInitialScale) { mViewportMaximumScale = mViewportInitialScale; mViewportMaximumScale = mViewportInitialScale; } } if (mViewportWidth < 0 if (mViewportWidth < 0 && mViewportInitialScale == defaultScale) { && mViewportInitialScale == WebView.DEFAULT_SCALE_PERCENT) { mViewportWidth = 0; mViewportWidth = 0; } } Loading @@ -1893,7 +1910,7 @@ final class WebViewCore { // we call WebView method from WebCore thread. But not perfect // we call WebView method from WebCore thread. But not perfect // reference is better than no reference. // reference is better than no reference. webViewWidth = mWebView.getViewWidth(); webViewWidth = mWebView.getViewWidth(); viewportWidth = webViewWidth * 100 / WebView.DEFAULT_SCALE_PERCENT; viewportWidth = (int) (webViewWidth / adjust); if (viewportWidth == 0) { if (viewportWidth == 0) { Log.w(LOGTAG, "Can't get the viewWidth after the first layout"); Log.w(LOGTAG, "Can't get the viewWidth after the first layout"); } } Loading @@ -1903,6 +1920,7 @@ final class WebViewCore { mRestoreState = new RestoreState(); mRestoreState = new RestoreState(); mRestoreState.mMinScale = mViewportMinimumScale / 100.0f; mRestoreState.mMinScale = mViewportMinimumScale / 100.0f; mRestoreState.mMaxScale = mViewportMaximumScale / 100.0f; mRestoreState.mMaxScale = mViewportMaximumScale / 100.0f; mRestoreState.mDefaultScale = adjust; mRestoreState.mScrollX = mRestoredX; mRestoreState.mScrollX = mRestoredX; mRestoreState.mScrollY = mRestoredY; mRestoreState.mScrollY = mRestoredY; mRestoreState.mMobileSite = (0 == mViewportWidth); mRestoreState.mMobileSite = (0 == mViewportWidth); Loading @@ -1924,8 +1942,7 @@ final class WebViewCore { mRestoreState.mViewScale = mRestoreState.mTextWrapScale = mRestoreState.mViewScale = mRestoreState.mTextWrapScale = (float) webViewWidth / mViewportWidth; (float) webViewWidth / mViewportWidth; } else { } else { mRestoreState.mTextWrapScale = mRestoreState.mTextWrapScale = adjust; WebView.DEFAULT_SCALE_PERCENT / 100.0f; // 0 will trigger WebView to turn on zoom overview mode // 0 will trigger WebView to turn on zoom overview mode mRestoreState.mViewScale = 0; mRestoreState.mViewScale = 0; } } Loading Loading
core/java/android/webkit/BrowserFrame.java +4 −0 Original line number Original line Diff line number Diff line Loading @@ -707,6 +707,10 @@ class BrowserFrame extends Handler { return value.string.toString(); return value.string.toString(); } } private float density() { return mContext.getResources().getDisplayMetrics().density; } //========================================================================== //========================================================================== // native functions // native functions //========================================================================== //========================================================================== Loading
core/java/android/webkit/WebView.java +2 −2 Original line number Original line Diff line number Diff line Loading @@ -4868,7 +4868,7 @@ public class WebView extends AbsoluteLayout / draw.mMinPrefWidth; / draw.mMinPrefWidth; mMinZoomScaleFixed = false; mMinZoomScaleFixed = false; } else { } else { mMinZoomScale = mDefaultScale; mMinZoomScale = restoreState.mDefaultScale; mMinZoomScaleFixed = true; mMinZoomScaleFixed = true; } } } else { } else { Loading @@ -4891,7 +4891,7 @@ public class WebView extends AbsoluteLayout && settings.getLoadWithOverviewMode()) { && settings.getLoadWithOverviewMode()) { if (restoreState.mViewScale == 0 if (restoreState.mViewScale == 0 || (restoreState.mMobileSite || (restoreState.mMobileSite && mMinZoomScale < mDefaultScale)) { && mMinZoomScale < restoreState.mDefaultScale)) { mInZoomOverview = true; mInZoomOverview = true; } } } } Loading
core/java/android/webkit/WebViewCore.java +37 −20 Original line number Original line Diff line number Diff line Loading @@ -100,6 +100,15 @@ final class WebViewCore { private boolean mViewportUserScalable = true; private boolean mViewportUserScalable = true; /* * range is from 70 to 400. * 0 is a special value means device-dpi. The default scale factor will be * always 100. * -1 means undefined. The default scale factor will be * WebView.DEFAULT_SCALE_PERCENT. */ private int mViewportDensityDpi = -1; private int mRestoredScale = 0; private int mRestoredScale = 0; private int mRestoredScreenWidthScale = 0; private int mRestoredScreenWidthScale = 0; private int mRestoredX = 0; private int mRestoredX = 0; Loading Loading @@ -1539,6 +1548,7 @@ final class WebViewCore { float mMaxScale; float mMaxScale; float mViewScale; float mViewScale; float mTextWrapScale; float mTextWrapScale; float mDefaultScale; int mScrollX; int mScrollX; int mScrollY; int mScrollY; boolean mMobileSite; boolean mMobileSite; Loading Loading @@ -1842,9 +1852,18 @@ final class WebViewCore { // set the viewport settings from WebKit // set the viewport settings from WebKit setViewportSettingsFromNative(); setViewportSettingsFromNative(); // adjust the default scale to match the density // adjust the default scale to match the densityDpi float adjust = 1.0f; if (mViewportDensityDpi == -1) { if (WebView.DEFAULT_SCALE_PERCENT != 100) { if (WebView.DEFAULT_SCALE_PERCENT != 100) { float adjust = (float) WebView.DEFAULT_SCALE_PERCENT / 100.0f; adjust = WebView.DEFAULT_SCALE_PERCENT / 100.0f; } } else if (mViewportDensityDpi > 0) { adjust = (float) mContext.getResources().getDisplayMetrics().densityDpi / mViewportDensityDpi; } int defaultScale = (int) (adjust * 100); if (mViewportInitialScale > 0) { if (mViewportInitialScale > 0) { mViewportInitialScale *= adjust; mViewportInitialScale *= adjust; } } Loading @@ -1854,18 +1873,17 @@ final class WebViewCore { if (mViewportMaximumScale > 0) { if (mViewportMaximumScale > 0) { mViewportMaximumScale *= adjust; mViewportMaximumScale *= adjust; } } } // infer the values if they are not defined. // infer the values if they are not defined. if (mViewportWidth == 0) { if (mViewportWidth == 0) { if (mViewportInitialScale == 0) { if (mViewportInitialScale == 0) { mViewportInitialScale = WebView.DEFAULT_SCALE_PERCENT; mViewportInitialScale = defaultScale; } } } } if (mViewportUserScalable == false) { if (mViewportUserScalable == false) { mViewportInitialScale = WebView.DEFAULT_SCALE_PERCENT; mViewportInitialScale = defaultScale; mViewportMinimumScale = WebView.DEFAULT_SCALE_PERCENT; mViewportMinimumScale = defaultScale; mViewportMaximumScale = WebView.DEFAULT_SCALE_PERCENT; mViewportMaximumScale = defaultScale; } } if (mViewportMinimumScale > mViewportInitialScale if (mViewportMinimumScale > mViewportInitialScale && mViewportInitialScale != 0) { && mViewportInitialScale != 0) { Loading @@ -1875,8 +1893,7 @@ final class WebViewCore { && mViewportMaximumScale < mViewportInitialScale) { && mViewportMaximumScale < mViewportInitialScale) { mViewportMaximumScale = mViewportInitialScale; mViewportMaximumScale = mViewportInitialScale; } } if (mViewportWidth < 0 if (mViewportWidth < 0 && mViewportInitialScale == defaultScale) { && mViewportInitialScale == WebView.DEFAULT_SCALE_PERCENT) { mViewportWidth = 0; mViewportWidth = 0; } } Loading @@ -1893,7 +1910,7 @@ final class WebViewCore { // we call WebView method from WebCore thread. But not perfect // we call WebView method from WebCore thread. But not perfect // reference is better than no reference. // reference is better than no reference. webViewWidth = mWebView.getViewWidth(); webViewWidth = mWebView.getViewWidth(); viewportWidth = webViewWidth * 100 / WebView.DEFAULT_SCALE_PERCENT; viewportWidth = (int) (webViewWidth / adjust); if (viewportWidth == 0) { if (viewportWidth == 0) { Log.w(LOGTAG, "Can't get the viewWidth after the first layout"); Log.w(LOGTAG, "Can't get the viewWidth after the first layout"); } } Loading @@ -1903,6 +1920,7 @@ final class WebViewCore { mRestoreState = new RestoreState(); mRestoreState = new RestoreState(); mRestoreState.mMinScale = mViewportMinimumScale / 100.0f; mRestoreState.mMinScale = mViewportMinimumScale / 100.0f; mRestoreState.mMaxScale = mViewportMaximumScale / 100.0f; mRestoreState.mMaxScale = mViewportMaximumScale / 100.0f; mRestoreState.mDefaultScale = adjust; mRestoreState.mScrollX = mRestoredX; mRestoreState.mScrollX = mRestoredX; mRestoreState.mScrollY = mRestoredY; mRestoreState.mScrollY = mRestoredY; mRestoreState.mMobileSite = (0 == mViewportWidth); mRestoreState.mMobileSite = (0 == mViewportWidth); Loading @@ -1924,8 +1942,7 @@ final class WebViewCore { mRestoreState.mViewScale = mRestoreState.mTextWrapScale = mRestoreState.mViewScale = mRestoreState.mTextWrapScale = (float) webViewWidth / mViewportWidth; (float) webViewWidth / mViewportWidth; } else { } else { mRestoreState.mTextWrapScale = mRestoreState.mTextWrapScale = adjust; WebView.DEFAULT_SCALE_PERCENT / 100.0f; // 0 will trigger WebView to turn on zoom overview mode // 0 will trigger WebView to turn on zoom overview mode mRestoreState.mViewScale = 0; mRestoreState.mViewScale = 0; } } Loading