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

Unified Diff: ui/android/java/src/org/chromium/ui/gfx/ViewConfigurationHelper.java

Issue 1216933013: [Android] Expose native ViewConfiguration constants as DIPs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix comment and add assert Created 5 years, 5 months 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
Index: ui/android/java/src/org/chromium/ui/gfx/ViewConfigurationHelper.java
diff --git a/ui/android/java/src/org/chromium/ui/gfx/ViewConfigurationHelper.java b/ui/android/java/src/org/chromium/ui/gfx/ViewConfigurationHelper.java
index e8fc5b996d8de8121e26e84733b1d0dbc7f53e1d..fb87417ae8cedc746c36cc867b7c1d5302dbe663 100644
--- a/ui/android/java/src/org/chromium/ui/gfx/ViewConfigurationHelper.java
+++ b/ui/android/java/src/org/chromium/ui/gfx/ViewConfigurationHelper.java
@@ -30,10 +30,13 @@ public class ViewConfigurationHelper {
private final Context mAppContext;
private ViewConfiguration mViewConfiguration;
+ private float mDensity;
private ViewConfigurationHelper(Context context) {
mAppContext = context.getApplicationContext();
mViewConfiguration = ViewConfiguration.get(mAppContext);
+ mDensity = mAppContext.getResources().getDisplayMetrics().density;
+ assert mDensity > 0;
}
private void registerListener() {
@@ -51,18 +54,18 @@ public class ViewConfigurationHelper {
}
private void updateNativeViewConfigurationIfNecessary() {
- // The ViewConfiguration will differ only if the density has changed.
ViewConfiguration configuration = ViewConfiguration.get(mAppContext);
- if (mViewConfiguration == configuration) return;
+ if (mViewConfiguration == configuration) {
+ // The density should remain the same as long as the ViewConfiguration remains the same.
+ assert mDensity == mAppContext.getResources().getDisplayMetrics().density;
+ return;
+ }
mViewConfiguration = configuration;
- nativeUpdateSharedViewConfiguration(
- getScaledMaximumFlingVelocity(),
- getScaledMinimumFlingVelocity(),
- getScaledTouchSlop(),
- getScaledDoubleTapSlop(),
- getScaledMinScalingSpan(),
- getScaledMinScalingTouchMajor());
+ mDensity = mAppContext.getResources().getDisplayMetrics().density;
+ assert mDensity > 0;
+ nativeUpdateSharedViewConfiguration(getMaximumFlingVelocity(), getMinimumFlingVelocity(),
+ getTouchSlop(), getDoubleTapSlop(), getMinScalingSpan(), getMinScalingTouchMajor());
}
@CalledByNative
@@ -86,26 +89,35 @@ public class ViewConfigurationHelper {
}
@CalledByNative
- private int getScaledMaximumFlingVelocity() {
- return mViewConfiguration.getScaledMaximumFlingVelocity();
+ private float getMaximumFlingVelocity() {
+ return toDips(mViewConfiguration.getScaledMaximumFlingVelocity());
}
@CalledByNative
- private int getScaledMinimumFlingVelocity() {
- return mViewConfiguration.getScaledMinimumFlingVelocity();
+ private float getMinimumFlingVelocity() {
+ return toDips(mViewConfiguration.getScaledMinimumFlingVelocity());
}
@CalledByNative
- private int getScaledTouchSlop() {
- return mViewConfiguration.getScaledTouchSlop();
+ private float getTouchSlop() {
+ return toDips(mViewConfiguration.getScaledTouchSlop());
}
@CalledByNative
- private int getScaledDoubleTapSlop() {
- return mViewConfiguration.getScaledDoubleTapSlop();
+ private float getDoubleTapSlop() {
+ return toDips(mViewConfiguration.getScaledDoubleTapSlop());
}
@CalledByNative
+ private float getMinScalingSpan() {
+ return toDips(getScaledMinScalingSpan());
+ }
+
+ @CalledByNative
+ private float getMinScalingTouchMajor() {
+ return toDips(getScaledMinScalingTouchMajor());
+ }
+
private int getScaledMinScalingSpan() {
final Resources res = mAppContext.getResources();
int id = res.getIdentifier("config_minScalingSpan", "dimen", "android");
@@ -120,7 +132,6 @@ public class ViewConfigurationHelper {
}
}
- @CalledByNative
private int getScaledMinScalingTouchMajor() {
final Resources res = mAppContext.getResources();
int id = res.getIdentifier("config_minScalingTouchMajor", "dimen", "android");
@@ -135,6 +146,13 @@ public class ViewConfigurationHelper {
}
}
+ /**
+ * @return the unscaled pixel quantity in DIPs.
+ */
+ private float toDips(int pixels) {
+ return pixels / mDensity;
+ }
+
@CalledByNative
private static ViewConfigurationHelper createWithListener(Context context) {
ViewConfigurationHelper viewConfigurationHelper = new ViewConfigurationHelper(context);
@@ -142,8 +160,7 @@ public class ViewConfigurationHelper {
return viewConfigurationHelper;
}
- private native void nativeUpdateSharedViewConfiguration(
- int scaledMaximumFlingVelocity, int scaledMinimumFlingVelocity,
- int scaledTouchSlop, int scaledDoubleTapSlop,
- int scaledMinScalingSpan, int scaledMinScalingTouchMajor);
+ private native void nativeUpdateSharedViewConfiguration(float maximumFlingVelocity,
+ float minimumFlingVelocity, float touchSlop, float doubleTapSlop, float minScalingSpan,
+ float minScalingTouchMajor);
}

Powered by Google App Engine
This is Rietveld 408576698