| 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 686946293b2db01635b583cd84e20d51ee7e7394..fa5afa79865bdf195c56c3493b6ae3c7d3e85e32 100644
|
| --- a/ui/android/java/src/org/chromium/ui/display/DisplayAndroid.java
|
| +++ b/ui/android/java/src/org/chromium/ui/display/DisplayAndroid.java
|
| @@ -34,6 +34,13 @@ public class DisplayAndroid {
|
| * @param orientation One of Surface.ROTATION_* values.
|
| */
|
| void onRotationChanged(int rotation);
|
| +
|
| + /**
|
| + * Called whenever the screen density changes.
|
| + *
|
| + * @param screen density, aka Density Independent Pixel scale.
|
| + */
|
| + void onDIPScaleChanged(float dipScale);
|
| }
|
|
|
| private static final String TAG = "DisplayAndroid";
|
| @@ -190,6 +197,8 @@ public class DisplayAndroid {
|
|
|
| @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
|
| /* package */ void updateFromDisplay(Display display) {
|
| + float oldDensity = mDisplayMetrics.density;
|
| +
|
| display.getSize(mSize);
|
| display.getMetrics(mDisplayMetrics);
|
|
|
| @@ -209,6 +218,16 @@ public class DisplayAndroid {
|
| o.onRotationChanged(mRotation);
|
| }
|
| }
|
| +
|
| + // Intentional comparison of floats: we assume that if scales differ,
|
| + // they differ significantly.
|
| + boolean dipScaleChanged = oldDensity != mDisplayMetrics.density;
|
| + if (dipScaleChanged) {
|
| + DisplayAndroidObserver[] observers = getObservers();
|
| + for (DisplayAndroidObserver o : observers) {
|
| + o.onDIPScaleChanged(mDisplayMetrics.density);
|
| + }
|
| + }
|
| }
|
|
|
| private DisplayAndroidObserver[] getObservers() {
|
|
|