Index: android_webview/java/src/org/chromium/android_webview/AwContents.java |
diff --git a/android_webview/java/src/org/chromium/android_webview/AwContents.java b/android_webview/java/src/org/chromium/android_webview/AwContents.java |
index b4e752e4d27d9b473c523e7e3cbe97a092faccbe..030a0a55bf0a10e9dbe748bc7c357e23b0e7f600 100644 |
--- a/android_webview/java/src/org/chromium/android_webview/AwContents.java |
+++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java |
@@ -74,6 +74,7 @@ |
import org.chromium.ui.base.PageTransition; |
import org.chromium.ui.base.ViewAndroidDelegate; |
import org.chromium.ui.base.WindowAndroid; |
+import org.chromium.ui.gfx.DeviceDisplayInfo; |
import java.io.File; |
import java.lang.annotation.Annotation; |
@@ -297,6 +298,8 @@ |
private Bitmap mFavicon; |
private boolean mHasRequestedVisitedHistoryFromClient; |
+ // TODO(boliu): This should be in a global context, not per webview. |
+ private final double mDIPScale; |
// Whether this WebView is a popup. |
private boolean mIsPopupWindow = false; |
@@ -758,7 +761,9 @@ |
mContentViewClient = new AwContentViewClient(contentsClient, settings, this, mContext); |
mLayoutSizer = dependencyFactory.createLayoutSizer(); |
mSettings = settings; |
+ mDIPScale = DeviceDisplayInfo.create(mContext).getDIPScale(); |
mLayoutSizer.setDelegate(new AwLayoutSizerDelegate()); |
+ mLayoutSizer.setDIPScale(mDIPScale); |
mWebContentsDelegate = new AwWebContentsDelegateAdapter( |
this, contentsClient, mContentViewClient, mContext, mContainerView); |
mContentsClientBridge = new AwContentsClientBridge(mContext, contentsClient, |
@@ -789,6 +794,7 @@ |
mDefaultVideoPosterRequestHandler = new DefaultVideoPosterRequestHandler(mContentsClient); |
mSettings.setDefaultVideoPosterURL( |
mDefaultVideoPosterRequestHandler.getDefaultVideoPosterURL()); |
+ mSettings.setDIPScale(mDIPScale); |
mScrollOffsetManager = |
dependencyFactory.createScrollOffsetManager(new AwScrollOffsetManagerDelegate()); |
mScrollAccessibilityHelper = new ScrollAccessibilityHelper(mContainerView); |
@@ -1046,12 +1052,7 @@ |
mNavigationController = mWebContents.getNavigationController(); |
installWebContentsObserver(); |
mSettings.setWebContents(webContents); |
- |
- float dipScale = mContentViewCore.getDeviceScaleFactor(); |
- nativeSetDipScale(mNativeAwContents, dipScale); |
- mLayoutSizer.setDIPScale(dipScale); |
- mSettings.setDIPScale(dipScale); |
- |
+ nativeSetDipScale(mNativeAwContents, (float) mDIPScale); |
updateContentViewCoreVisibility(); |
// The native side object has been bound to this java instance, so now is the time to |
@@ -2091,7 +2092,7 @@ |
*/ |
public float getScale() { |
if (isDestroyed(WARN)) return 1; |
- return (float) (mPageScaleFactor * mContentViewCore.getDeviceScaleFactor()); |
+ return (float) (mPageScaleFactor * mDIPScale); |
} |
/** |
@@ -2862,9 +2863,9 @@ |
if (mPageScaleFactor != pageScaleFactor) { |
float oldPageScaleFactor = mPageScaleFactor; |
mPageScaleFactor = pageScaleFactor; |
- float dipScale = mContentViewCore.getDeviceScaleFactor(); |
mContentsClient.getCallbackHelper().postOnScaleChangedScaled( |
- oldPageScaleFactor * dipScale, mPageScaleFactor * dipScale); |
+ (float) (oldPageScaleFactor * mDIPScale), |
+ (float) (mPageScaleFactor * mDIPScale)); |
} |
} |
@@ -3090,10 +3091,10 @@ |
if (event.getActionMasked() == MotionEvent.ACTION_DOWN) { |
// Note this will trigger IPC back to browser even if nothing is |
// hit. |
- float dipScale = mContentViewCore.getDeviceScaleFactor(); |
nativeRequestNewHitTestDataAt(mNativeAwContents, |
- event.getX() / dipScale, event.getY() / dipScale, |
- Math.max(event.getTouchMajor(), event.getTouchMinor()) / dipScale); |
+ event.getX() / (float) mDIPScale, |
+ event.getY() / (float) mDIPScale, |
+ Math.max(event.getTouchMajor(), event.getTouchMinor()) / (float) mDIPScale); |
} |
if (mOverScrollGlow != null) { |