OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.ui.gfx; | 5 package org.chromium.ui.gfx; |
6 | 6 |
7 import android.content.ComponentCallbacks; | 7 import android.content.ComponentCallbacks; |
8 import android.content.Context; | 8 import android.content.Context; |
9 import android.content.res.Configuration; | 9 import android.content.res.Configuration; |
10 import android.content.res.Resources; | 10 import android.content.res.Resources; |
| 11 import android.os.Build; |
11 import android.util.TypedValue; | 12 import android.util.TypedValue; |
12 import android.view.ViewConfiguration; | 13 import android.view.ViewConfiguration; |
13 | 14 |
14 import org.chromium.base.CalledByNative; | 15 import org.chromium.base.CalledByNative; |
15 import org.chromium.base.JNINamespace; | 16 import org.chromium.base.JNINamespace; |
16 import org.chromium.ui.R; | 17 import org.chromium.ui.R; |
17 | 18 |
18 /** | 19 /** |
19 * This class facilitates access to ViewConfiguration-related properties, also | 20 * This class facilitates access to ViewConfiguration-related properties, also |
20 * providing native-code notifications when such properties have changed. | 21 * providing native-code notifications when such properties have changed. |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
129 try { | 130 try { |
130 return res.getDimensionPixelSize(id); | 131 return res.getDimensionPixelSize(id); |
131 } catch (Resources.NotFoundException e) { | 132 } catch (Resources.NotFoundException e) { |
132 assert false : "MinScalingTouchMajor resource lookup failed."; | 133 assert false : "MinScalingTouchMajor resource lookup failed."; |
133 return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, | 134 return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, |
134 MIN_SCALING_TOUCH_MAJOR_DIP, res.getDisplayMetrics()); | 135 MIN_SCALING_TOUCH_MAJOR_DIP, res.getDisplayMetrics()); |
135 } | 136 } |
136 } | 137 } |
137 | 138 |
138 @CalledByNative | 139 @CalledByNative |
| 140 private static boolean shouldUseTouchMajorInScalingSpan() { |
| 141 // Android's ScaleGestureDetector started using touch major values in |
| 142 // JBMR1. Many devices from versions prior report wildly inconsistent |
| 143 // touch sizes, so disable touch major use in such scenarios. |
| 144 return Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1; |
| 145 } |
| 146 |
| 147 @CalledByNative |
139 private static ViewConfigurationHelper createWithListener(Context context) { | 148 private static ViewConfigurationHelper createWithListener(Context context) { |
140 ViewConfigurationHelper viewConfigurationHelper = new ViewConfigurationH
elper(context); | 149 ViewConfigurationHelper viewConfigurationHelper = new ViewConfigurationH
elper(context); |
141 viewConfigurationHelper.registerListener(); | 150 viewConfigurationHelper.registerListener(); |
142 return viewConfigurationHelper; | 151 return viewConfigurationHelper; |
143 } | 152 } |
144 | 153 |
145 private native void nativeUpdateSharedViewConfiguration( | 154 private native void nativeUpdateSharedViewConfiguration( |
146 int scaledMaximumFlingVelocity, int scaledMinimumFlingVelocity, | 155 int scaledMaximumFlingVelocity, int scaledMinimumFlingVelocity, |
147 int scaledTouchSlop, int scaledDoubleTapSlop, | 156 int scaledTouchSlop, int scaledDoubleTapSlop, |
148 int scaledMinScalingSpan, int scaledMinScalingTouchMajor); | 157 int scaledMinScalingSpan, int scaledMinScalingTouchMajor); |
149 } | 158 } |
OLD | NEW |