summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorShimeng (Simon) Wang <swang@google.com>2010-09-17 11:31:45 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-09-17 11:31:45 -0700
commit3fed1bd49a43fa006d92d69c2ff34751cb4b25e3 (patch)
treea08fbba41fa640ad8a1a9ff9e5b872787369d114 /core/java
parentbfb619a12aa723ab2d6a9ce9444f633488cc31a4 (diff)
parent14bcc0e7fe4e2cfddb0d98079ec0fbdbe33c5e87 (diff)
Merge "Use website preferred width as the fixed viewport."
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/webkit/WebSettings.java13
-rw-r--r--core/java/android/webkit/WebView.java2
-rw-r--r--core/java/android/webkit/WebViewCore.java9
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");