Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(59)

Unified Diff: ui/android/java/src/org/chromium/ui/display/DisplayAndroid.java

Issue 2300463002: Add observers for DIP scale change. (Closed)
Patch Set: Rebased to master Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/public/android/javatests/src/org/chromium/content/browser/ScreenOrientationListenerTest.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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() {
« no previous file with comments | « content/public/android/javatests/src/org/chromium/content/browser/ScreenOrientationListenerTest.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698