| Index: ui/android/java/src/org/chromium/ui/gfx/DeviceDisplayInfo.java
|
| diff --git a/ui/android/java/src/org/chromium/ui/gfx/DeviceDisplayInfo.java b/ui/android/java/src/org/chromium/ui/gfx/DeviceDisplayInfo.java
|
| index 44c599042ef3956501203b767b69873a743b6b4d..5ca6ca037e47b45e9f9ae5dbd0e6bd64bbfd109b 100644
|
| --- a/ui/android/java/src/org/chromium/ui/gfx/DeviceDisplayInfo.java
|
| +++ b/ui/android/java/src/org/chromium/ui/gfx/DeviceDisplayInfo.java
|
| @@ -14,6 +14,7 @@ import android.view.Display;
|
| import android.view.Surface;
|
| import android.view.WindowManager;
|
|
|
| +import org.chromium.base.CommandLine;
|
| import org.chromium.base.annotations.CalledByNative;
|
| import org.chromium.base.annotations.JNINamespace;
|
|
|
| @@ -32,6 +33,28 @@ public class DeviceDisplayInfo {
|
| private Point mTempPoint = new Point();
|
| private DisplayMetrics mTempMetrics = new DisplayMetrics();
|
|
|
| + // The value -1.0 signals that it is unknown whether the forced value is set,
|
| + // 0.0 means that it is not set and positive that it's set.
|
| + private static float sForcedDIPScale = -1.0f;
|
| +
|
| + private static boolean hasForcedDIPScale() {
|
| + if (sForcedDIPScale < 0) {
|
| + String forcedScaleAsString = CommandLine.getInstance().getSwitchValue(
|
| + DisplaySwitches.FORCE_DEVICE_SCALE_FACTOR);
|
| + if (forcedScaleAsString == null) {
|
| + sForcedDIPScale = 0.0f;
|
| + } else {
|
| + try {
|
| + sForcedDIPScale = Math.abs(Float.valueOf(forcedScaleAsString));
|
| + } catch (NumberFormatException e) {
|
| + // Invalid numerical value is discarded.
|
| + sForcedDIPScale = 0.0f;
|
| + }
|
| + }
|
| + }
|
| + return sForcedDIPScale > 0;
|
| + }
|
| +
|
| private DeviceDisplayInfo(Context context) {
|
| mAppContext = context.getApplicationContext();
|
| mWinManager = (WindowManager) mAppContext.getSystemService(Context.WINDOW_SERVICE);
|
| @@ -144,6 +167,8 @@ public class DeviceDisplayInfo {
|
| */
|
| @CalledByNative
|
| public double getDIPScale() {
|
| + if (hasForcedDIPScale()) return sForcedDIPScale;
|
| +
|
| getDisplay().getMetrics(mTempMetrics);
|
| return mTempMetrics.density;
|
| }
|
|
|