Index: ui/android/java/src/org/chromium/ui/display/DisplayAndroid.java |
diff --git a/ui/android/java/src/org/chromium/ui/display/DisplayAndroid.java b/ui/android/java/src/org/chromium/ui/display/DisplayAndroid.java |
index 6ec2ea29d75adee514ff86fda5e32d6b87c57ea7..89f9bbb3675c9c527da4a808f1b49626a7e61863 100644 |
--- a/ui/android/java/src/org/chromium/ui/display/DisplayAndroid.java |
+++ b/ui/android/java/src/org/chromium/ui/display/DisplayAndroid.java |
@@ -8,6 +8,7 @@ import android.annotation.TargetApi; |
import android.content.Context; |
import android.graphics.Point; |
import android.os.Build; |
+import android.util.DisplayMetrics; |
import android.view.Display; |
import java.util.WeakHashMap; |
@@ -42,13 +43,18 @@ public class DisplayAndroid { |
// Updated by updateFromDisplay. |
private final Point mSize; |
private final Point mPhysicalSize; |
+ private final DisplayMetrics mDisplayMetrics; |
private int mRotation; |
private static DisplayAndroidManager getManager() { |
return DisplayAndroidManager.getInstance(); |
} |
- // Internal implementation. Should not be called outside of UI. |
+ /** |
+ * Get the DisplayAndroid for this context. It's safe to call this with any type of context |
+ * including the Application. However to support multi-display, prefer to use the Activity |
+ * context if available, or obtain DisplayAndroid from WindowAndroid instead. |
+ */ |
public static DisplayAndroid get(Context context) { |
Display display = DisplayAndroidManager.getDisplayFromContext(context); |
int id = display.getDisplayId(); |
@@ -91,6 +97,13 @@ public class DisplayAndroid { |
} |
/** |
+ * @return A scaling factor for the Density Independent Pixel unit. |
+ */ |
+ public double getDIPScale() { |
+ return mDisplayMetrics.density; |
+ } |
+ |
+ /** |
* Add observer. Note repeat observers will be called only one. |
* Observers are held only weakly by Display. |
*/ |
@@ -126,12 +139,14 @@ public class DisplayAndroid { |
mObservers = new WeakHashMap<>(); |
mSize = new Point(); |
mPhysicalSize = new Point(); |
+ mDisplayMetrics = new DisplayMetrics(); |
updateFromDisplay(display); |
} |
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) |
/* package */ void updateFromDisplay(Display display) { |
display.getSize(mSize); |
+ display.getMetrics(mDisplayMetrics); |
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { |
display.getRealSize(mPhysicalSize); |