| 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 0702a70def1c1fdbe7bc2afb60031bec76c506cf..fe156a6540ebfafd4a7e31559cd55b2ab1c7dca6 100644
|
| --- a/ui/android/java/src/org/chromium/ui/display/DisplayAndroid.java
|
| +++ b/ui/android/java/src/org/chromium/ui/display/DisplayAndroid.java
|
| @@ -36,6 +36,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";
|
| @@ -249,6 +256,8 @@ public class DisplayAndroid {
|
| @SuppressWarnings("deprecation")
|
| @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
|
| /* package */ void updateFromDisplay(Display display) {
|
| + float oldDensity = mDisplayMetrics.density;
|
| +
|
| display.getSize(mSize);
|
| display.getMetrics(mDisplayMetrics);
|
|
|
| @@ -273,6 +282,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() {
|
|
|