diff options
| author | Shimeng (Simon) Wang <swang@google.com> | 2010-09-17 11:31:45 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-09-17 11:31:45 -0700 |
| commit | 3fed1bd49a43fa006d92d69c2ff34751cb4b25e3 (patch) | |
| tree | a08fbba41fa640ad8a1a9ff9e5b872787369d114 /core/java | |
| parent | bfb619a12aa723ab2d6a9ce9444f633488cc31a4 (diff) | |
| parent | 14bcc0e7fe4e2cfddb0d98079ec0fbdbe33c5e87 (diff) | |
Merge "Use website preferred width as the fixed viewport."
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/webkit/WebSettings.java | 13 | ||||
| -rw-r--r-- | core/java/android/webkit/WebView.java | 2 | ||||
| -rw-r--r-- | core/java/android/webkit/WebViewCore.java | 9 |
3 files changed, 20 insertions, 4 deletions
diff --git a/core/java/android/webkit/WebSettings.java b/core/java/android/webkit/WebSettings.java index d81d7f2e88fd..122c268b093b 100644 --- a/core/java/android/webkit/WebSettings.java +++ b/core/java/android/webkit/WebSettings.java @@ -178,6 +178,7 @@ public class WebSettings { private boolean mUseDoubleTree = false; private boolean mUseWideViewport = false; private boolean mUseFixedViewport = false; + private int mMaxFixedViewportWidth = WebView.DEFAULT_VIEWPORT_WIDTH; private boolean mSupportMultipleWindows = false; private boolean mShrinksStandaloneImagesToFit = false; private long mMaximumDecodedImageSize = 0; // 0 means default @@ -324,8 +325,9 @@ public class WebSettings { // Detect tablet device for fixed viewport mode. final DisplayMetrics metrics = context.getResources().getDisplayMetrics(); - mUseFixedViewport = (metrics.density == 1.0f - && (metrics.widthPixels >= 800 ||metrics.heightPixels >= 800)); + final int landscapeWidth = Math.max(metrics.widthPixels, metrics.heightPixels); + mUseFixedViewport = (metrics.density == 1.0f && landscapeWidth >= 800); + mMaxFixedViewportWidth = (int) (landscapeWidth * 1.25); if (sLockForLocaleSettings == null) { sLockForLocaleSettings = new Object(); @@ -1516,6 +1518,13 @@ public class WebSettings { } /** + * Returns maximum fixed viewport width. + */ + /* package */ int getMaxFixedViewportWidth() { + return mMaxFixedViewportWidth; + } + + /** * Returns whether private browsing is enabled. */ /* package */ boolean isPrivateBrowsingEnabled() { diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 5d4ae6dbee50..c62894c743cf 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -667,7 +667,7 @@ public class WebView extends AbsoluteLayout // If the site doesn't use the viewport meta tag to specify the viewport, // use DEFAULT_VIEWPORT_WIDTH as the default viewport width - static final int DEFAULT_VIEWPORT_WIDTH = 1040; + static final int DEFAULT_VIEWPORT_WIDTH = 980; // normally we try to fit the content to the minimum preferred width // calculated by the Webkit. To avoid the bad behavior when some site's diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java index 37668301c691..acea1632f373 100644 --- a/core/java/android/webkit/WebViewCore.java +++ b/core/java/android/webkit/WebViewCore.java @@ -1706,7 +1706,7 @@ final class WebViewCore { } } else if (mViewportWidth > 0) { if (mSettings.getUseFixedViewport()) { - // Use website specified viewport width. + // Use website specified or desired fixed viewport width. width = mViewportWidth; } else { width = Math.max(w, mViewportWidth); @@ -1827,6 +1827,13 @@ final class WebViewCore { } if (mInitialViewState != null) { draw.mViewState = mInitialViewState; + if (mViewportWidth == -1 && mSettings.getUseFixedViewport() && + mSettings.getUseWideViewPort()) { + // Use website's initial preferred width as the fixed viewport width. + mViewportWidth = Math.min(mSettings.getMaxFixedViewportWidth(), + draw.mMinPrefWidth); + draw.mViewState.mViewportWidth = mViewportWidth; + } mInitialViewState = null; } if (DebugFlags.WEB_VIEW_CORE) Log.v(LOGTAG, "webkitDraw NEW_PICTURE_MSG_ID"); |
