Chromium Code Reviews| Index: content/browser/renderer_host/input/motion_event_android.cc |
| diff --git a/content/browser/renderer_host/input/motion_event_android.cc b/content/browser/renderer_host/input/motion_event_android.cc |
| index 6688a3d24dd7c5d23bbac302e1eeb6903511df77..c6c24cafe3e842fa245e8692fc8126319653481c 100644 |
| --- a/content/browser/renderer_host/input/motion_event_android.cc |
| +++ b/content/browser/renderer_host/input/motion_event_android.cc |
| @@ -5,6 +5,7 @@ |
| #include "content/browser/renderer_host/input/motion_event_android.h" |
| #include "base/android/jni_android.h" |
| +#include "base/float_util.h" |
| #include "jni/MotionEvent_jni.h" |
| using base::android::AttachCurrentThread; |
| @@ -114,6 +115,10 @@ MotionEventAndroid::MotionEventAndroid(float pix_to_dip, |
| jint pointer_id_1, |
| jfloat touch_major_0_pixels, |
| jfloat touch_major_1_pixels, |
| + jfloat touch_minor_0_pixels, |
| + jfloat touch_minor_1_pixels, |
| + jfloat orientation_0_rad, |
| + jfloat orientation_1_rad, |
| jfloat raw_pos_x_pixels, |
| jfloat raw_pos_y_pixels, |
| jint android_tool_type_0, |
| @@ -139,6 +144,10 @@ MotionEventAndroid::MotionEventAndroid(float pix_to_dip, |
| cached_pointer_ids_[1] = pointer_id_1; |
| cached_touch_majors_[0] = ToDips(touch_major_0_pixels); |
| cached_touch_majors_[1] = ToDips(touch_major_1_pixels); |
| + cached_touch_minors_[0] = ToDips(touch_minor_0_pixels); |
| + cached_touch_minors_[1] = ToDips(touch_minor_1_pixels); |
| + cached_orientations_[0] = ToValidFloat(orientation_0_rad); |
| + cached_orientations_[1] = ToValidFloat(orientation_1_rad); |
| cached_raw_position_offset_ = |
| ToDips(gfx::PointF(raw_pos_x_pixels, raw_pos_y_pixels)) - |
| cached_positions_[0]; |
| @@ -170,11 +179,17 @@ MotionEventAndroid::MotionEventAndroid(float pix_to_dip, |
| cached_pointer_ids_[i] = Java_MotionEvent_getPointerId(env, event, i); |
| cached_touch_majors_[i] = |
| ToDips(Java_MotionEvent_getTouchMajorF_I(env, event, i)); |
| + cached_touch_minors_[i] = |
| + ToDips(Java_MotionEvent_getTouchMinorF_I(env, event, i)); |
| + cached_orientations_[i] = |
| + ToValidFloat(Java_MotionEvent_getOrientationF_I(env, event, i)); |
| cached_tool_types_[i] = |
| FromAndroidToolType(Java_MotionEvent_getToolType(env, event, i)); |
| } else { |
| cached_pointer_ids_[i] = 0; |
| cached_touch_majors_[i] = 0.f; |
| + cached_touch_minors_[i] = 0.f; |
| + cached_orientations_[i] = 0.f; |
| cached_tool_types_[i] = MotionEvent::TOOL_TYPE_UNKNOWN; |
| } |
| } |
| @@ -201,6 +216,8 @@ MotionEventAndroid::MotionEventAndroid(const MotionEventAndroid& other) |
| cached_positions_[i] = other.cached_positions_[i]; |
| cached_pointer_ids_[i] = other.cached_pointer_ids_[i]; |
| cached_touch_majors_[i] = other.cached_touch_majors_[i]; |
| + cached_touch_minors_[i] = other.cached_touch_minors_[i]; |
| + cached_orientations_[i] = other.cached_orientations_[i]; |
| cached_tool_types_[i] = other.cached_tool_types_[i]; |
| } |
| } |
| @@ -266,6 +283,22 @@ float MotionEventAndroid::GetTouchMajor(size_t pointer_index) const { |
| AttachCurrentThread(), event_.obj(), pointer_index)); |
| } |
| +float MotionEventAndroid::GetTouchMinor(size_t pointer_index) const { |
| + DCHECK_LT(pointer_index, cached_pointer_count_); |
| + if (pointer_index < MAX_POINTERS_TO_CACHE) |
| + return cached_touch_minors_[pointer_index]; |
| + return ToDips(Java_MotionEvent_getTouchMinorF_I(AttachCurrentThread(), |
| + event_.obj(), pointer_index)); |
| +} |
| + |
| +float MotionEventAndroid::GetOrientation(size_t pointer_index) const { |
| + DCHECK_LT(pointer_index, cached_pointer_count_); |
| + if (pointer_index < MAX_POINTERS_TO_CACHE) |
| + return cached_orientations_[pointer_index]; |
| + return ToValidFloat(Java_MotionEvent_getOrientationF_I( |
| + AttachCurrentThread(), event_.obj(), pointer_index)); |
| +} |
| + |
| float MotionEventAndroid::GetPressure(size_t pointer_index) const { |
| DCHECK_LT(pointer_index, cached_pointer_count_); |
| return Java_MotionEvent_getPressureF_I( |
| @@ -337,20 +370,15 @@ scoped_ptr<ui::MotionEvent> MotionEventAndroid::Cancel() const { |
| position_pixels.y()).obj())); |
| } |
| -float MotionEventAndroid::GetTouchMinor(size_t pointer_index) const { |
| - return ToDips(Java_MotionEvent_getTouchMinorF_I( |
| - AttachCurrentThread(), event_.obj(), pointer_index)); |
| -} |
| - |
| -float MotionEventAndroid::GetOrientation() const { |
| - return Java_MotionEvent_getOrientationF(AttachCurrentThread(), event_.obj()); |
| -} |
| - |
| base::TimeTicks MotionEventAndroid::GetDownTime() const { |
| return FromAndroidTime( |
| Java_MotionEvent_getDownTime(AttachCurrentThread(), event_.obj())); |
| } |
| +float MotionEventAndroid::ToValidFloat(float x) const { |
|
jdduke (slow)
2014/08/29 16:45:08
Nit: This should probably be a free function in th
mustaq
2014/08/29 20:54:01
Done.
|
| + return base::IsNaN(x) ? 0.f : x; |
| +} |
| + |
| float MotionEventAndroid::ToDips(float pixels) const { |
| return pixels * pix_to_dip_; |
| } |