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

Side by Side Diff: content/browser/renderer_host/input/motion_event_android.cc

Issue 531133002: Revert of Completed webkit radiusX, radiusY and rotationAngle handling. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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 unified diff | Download patch
OLDNEW
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 #include "content/browser/renderer_host/input/motion_event_android.h" 5 #include "content/browser/renderer_host/input/motion_event_android.h"
6 6
7 #include "base/android/jni_android.h" 7 #include "base/android/jni_android.h"
8 #include "base/float_util.h"
9 #include "jni/MotionEvent_jni.h" 8 #include "jni/MotionEvent_jni.h"
10 9
11 using base::android::AttachCurrentThread; 10 using base::android::AttachCurrentThread;
12 using namespace JNI_MotionEvent; 11 using namespace JNI_MotionEvent;
13 12
14 namespace content { 13 namespace content {
15 namespace { 14 namespace {
16 15
17 int ToAndroidAction(MotionEventAndroid::Action action) { 16 int ToAndroidAction(MotionEventAndroid::Action action) {
18 switch (action) { 17 switch (action) {
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 } 89 }
91 90
92 int64 ToAndroidTime(base::TimeTicks time) { 91 int64 ToAndroidTime(base::TimeTicks time) {
93 return (time - base::TimeTicks()).InMilliseconds(); 92 return (time - base::TimeTicks()).InMilliseconds();
94 } 93 }
95 94
96 base::TimeTicks FromAndroidTime(int64 time_ms) { 95 base::TimeTicks FromAndroidTime(int64 time_ms) {
97 return base::TimeTicks() + base::TimeDelta::FromMilliseconds(time_ms); 96 return base::TimeTicks() + base::TimeDelta::FromMilliseconds(time_ms);
98 } 97 }
99 98
100 float ToValidFloat(float x) {
101 return base::IsNaN(x) ? 0.f : x;
102 }
103
104 } // namespace 99 } // namespace
105 100
106 MotionEventAndroid::MotionEventAndroid(float pix_to_dip, 101 MotionEventAndroid::MotionEventAndroid(float pix_to_dip,
107 JNIEnv* env, 102 JNIEnv* env,
108 jobject event, 103 jobject event,
109 jlong time_ms, 104 jlong time_ms,
110 jint android_action, 105 jint android_action,
111 jint pointer_count, 106 jint pointer_count,
112 jint history_size, 107 jint history_size,
113 jint action_index, 108 jint action_index,
114 jfloat pos_x_0_pixels, 109 jfloat pos_x_0_pixels,
115 jfloat pos_y_0_pixels, 110 jfloat pos_y_0_pixels,
116 jfloat pos_x_1_pixels, 111 jfloat pos_x_1_pixels,
117 jfloat pos_y_1_pixels, 112 jfloat pos_y_1_pixels,
118 jint pointer_id_0, 113 jint pointer_id_0,
119 jint pointer_id_1, 114 jint pointer_id_1,
120 jfloat touch_major_0_pixels, 115 jfloat touch_major_0_pixels,
121 jfloat touch_major_1_pixels, 116 jfloat touch_major_1_pixels,
122 jfloat touch_minor_0_pixels,
123 jfloat touch_minor_1_pixels,
124 jfloat orientation_0_rad,
125 jfloat orientation_1_rad,
126 jfloat raw_pos_x_pixels, 117 jfloat raw_pos_x_pixels,
127 jfloat raw_pos_y_pixels, 118 jfloat raw_pos_y_pixels,
128 jint android_tool_type_0, 119 jint android_tool_type_0,
129 jint android_tool_type_1, 120 jint android_tool_type_1,
130 jint android_button_state) 121 jint android_button_state)
131 : cached_time_(FromAndroidTime(time_ms)), 122 : cached_time_(FromAndroidTime(time_ms)),
132 cached_action_(FromAndroidAction(android_action)), 123 cached_action_(FromAndroidAction(android_action)),
133 cached_pointer_count_(pointer_count), 124 cached_pointer_count_(pointer_count),
134 cached_history_size_(history_size), 125 cached_history_size_(history_size),
135 cached_action_index_(action_index), 126 cached_action_index_(action_index),
136 cached_button_state_(FromAndroidButtonState(android_button_state)), 127 cached_button_state_(FromAndroidButtonState(android_button_state)),
137 pix_to_dip_(pix_to_dip), 128 pix_to_dip_(pix_to_dip),
138 should_recycle_(false) { 129 should_recycle_(false) {
139 DCHECK_GT(pointer_count, 0); 130 DCHECK_GT(pointer_count, 0);
140 DCHECK_GE(history_size, 0); 131 DCHECK_GE(history_size, 0);
141 132
142 event_.Reset(env, event); 133 event_.Reset(env, event);
143 DCHECK(event_.obj()); 134 DCHECK(event_.obj());
144 135
145 cached_positions_[0] = ToDips(gfx::PointF(pos_x_0_pixels, pos_y_0_pixels)); 136 cached_positions_[0] = ToDips(gfx::PointF(pos_x_0_pixels, pos_y_0_pixels));
146 cached_positions_[1] = ToDips(gfx::PointF(pos_x_1_pixels, pos_y_1_pixels)); 137 cached_positions_[1] = ToDips(gfx::PointF(pos_x_1_pixels, pos_y_1_pixels));
147 cached_pointer_ids_[0] = pointer_id_0; 138 cached_pointer_ids_[0] = pointer_id_0;
148 cached_pointer_ids_[1] = pointer_id_1; 139 cached_pointer_ids_[1] = pointer_id_1;
149 cached_touch_majors_[0] = ToDips(touch_major_0_pixels); 140 cached_touch_majors_[0] = ToDips(touch_major_0_pixels);
150 cached_touch_majors_[1] = ToDips(touch_major_1_pixels); 141 cached_touch_majors_[1] = ToDips(touch_major_1_pixels);
151 cached_touch_minors_[0] = ToDips(touch_minor_0_pixels);
152 cached_touch_minors_[1] = ToDips(touch_minor_1_pixels);
153 cached_orientations_[0] = ToValidFloat(orientation_0_rad);
154 cached_orientations_[1] = ToValidFloat(orientation_1_rad);
155 cached_raw_position_offset_ = 142 cached_raw_position_offset_ =
156 ToDips(gfx::PointF(raw_pos_x_pixels, raw_pos_y_pixels)) - 143 ToDips(gfx::PointF(raw_pos_x_pixels, raw_pos_y_pixels)) -
157 cached_positions_[0]; 144 cached_positions_[0];
158 cached_tool_types_[0] = FromAndroidToolType(android_tool_type_0); 145 cached_tool_types_[0] = FromAndroidToolType(android_tool_type_0);
159 cached_tool_types_[1] = FromAndroidToolType(android_tool_type_1); 146 cached_tool_types_[1] = FromAndroidToolType(android_tool_type_1);
160 } 147 }
161 148
162 MotionEventAndroid::MotionEventAndroid(float pix_to_dip, 149 MotionEventAndroid::MotionEventAndroid(float pix_to_dip,
163 JNIEnv* env, 150 JNIEnv* env,
164 jobject event) 151 jobject event)
(...skipping 11 matching lines...) Expand all
176 DCHECK(event_.obj()); 163 DCHECK(event_.obj());
177 164
178 for (size_t i = 0; i < MAX_POINTERS_TO_CACHE; ++i) { 165 for (size_t i = 0; i < MAX_POINTERS_TO_CACHE; ++i) {
179 if (i < cached_pointer_count_) { 166 if (i < cached_pointer_count_) {
180 cached_positions_[i] = 167 cached_positions_[i] =
181 ToDips(gfx::PointF(Java_MotionEvent_getXF_I(env, event, i), 168 ToDips(gfx::PointF(Java_MotionEvent_getXF_I(env, event, i),
182 Java_MotionEvent_getYF_I(env, event, i))); 169 Java_MotionEvent_getYF_I(env, event, i)));
183 cached_pointer_ids_[i] = Java_MotionEvent_getPointerId(env, event, i); 170 cached_pointer_ids_[i] = Java_MotionEvent_getPointerId(env, event, i);
184 cached_touch_majors_[i] = 171 cached_touch_majors_[i] =
185 ToDips(Java_MotionEvent_getTouchMajorF_I(env, event, i)); 172 ToDips(Java_MotionEvent_getTouchMajorF_I(env, event, i));
186 cached_touch_minors_[i] =
187 ToDips(Java_MotionEvent_getTouchMinorF_I(env, event, i));
188 cached_orientations_[i] =
189 ToValidFloat(Java_MotionEvent_getOrientationF_I(env, event, i));
190 cached_tool_types_[i] = 173 cached_tool_types_[i] =
191 FromAndroidToolType(Java_MotionEvent_getToolType(env, event, i)); 174 FromAndroidToolType(Java_MotionEvent_getToolType(env, event, i));
192 } else { 175 } else {
193 cached_pointer_ids_[i] = 0; 176 cached_pointer_ids_[i] = 0;
194 cached_touch_majors_[i] = 0.f; 177 cached_touch_majors_[i] = 0.f;
195 cached_touch_minors_[i] = 0.f;
196 cached_orientations_[i] = 0.f;
197 cached_tool_types_[i] = MotionEvent::TOOL_TYPE_UNKNOWN; 178 cached_tool_types_[i] = MotionEvent::TOOL_TYPE_UNKNOWN;
198 } 179 }
199 } 180 }
200 181
201 cached_raw_position_offset_ = 182 cached_raw_position_offset_ =
202 ToDips(gfx::PointF(Java_MotionEvent_getRawX(env, event), 183 ToDips(gfx::PointF(Java_MotionEvent_getRawX(env, event),
203 Java_MotionEvent_getRawY(env, event))) - 184 Java_MotionEvent_getRawY(env, event))) -
204 cached_positions_[0]; 185 cached_positions_[0];
205 } 186 }
206 187
207 MotionEventAndroid::MotionEventAndroid(const MotionEventAndroid& other) 188 MotionEventAndroid::MotionEventAndroid(const MotionEventAndroid& other)
208 : event_(Obtain(other)), 189 : event_(Obtain(other)),
209 cached_time_(other.cached_time_), 190 cached_time_(other.cached_time_),
210 cached_action_(other.cached_action_), 191 cached_action_(other.cached_action_),
211 cached_pointer_count_(other.cached_pointer_count_), 192 cached_pointer_count_(other.cached_pointer_count_),
212 cached_history_size_(other.cached_history_size_), 193 cached_history_size_(other.cached_history_size_),
213 cached_action_index_(other.cached_action_index_), 194 cached_action_index_(other.cached_action_index_),
214 cached_raw_position_offset_(other.cached_raw_position_offset_), 195 cached_raw_position_offset_(other.cached_raw_position_offset_),
215 cached_button_state_(other.cached_button_state_), 196 cached_button_state_(other.cached_button_state_),
216 pix_to_dip_(other.pix_to_dip_), 197 pix_to_dip_(other.pix_to_dip_),
217 should_recycle_(true) { 198 should_recycle_(true) {
218 DCHECK(event_.obj()); 199 DCHECK(event_.obj());
219 for (size_t i = 0; i < MAX_POINTERS_TO_CACHE; ++i) { 200 for (size_t i = 0; i < MAX_POINTERS_TO_CACHE; ++i) {
220 cached_positions_[i] = other.cached_positions_[i]; 201 cached_positions_[i] = other.cached_positions_[i];
221 cached_pointer_ids_[i] = other.cached_pointer_ids_[i]; 202 cached_pointer_ids_[i] = other.cached_pointer_ids_[i];
222 cached_touch_majors_[i] = other.cached_touch_majors_[i]; 203 cached_touch_majors_[i] = other.cached_touch_majors_[i];
223 cached_touch_minors_[i] = other.cached_touch_minors_[i];
224 cached_orientations_[i] = other.cached_orientations_[i];
225 cached_tool_types_[i] = other.cached_tool_types_[i]; 204 cached_tool_types_[i] = other.cached_tool_types_[i];
226 } 205 }
227 } 206 }
228 207
229 MotionEventAndroid::~MotionEventAndroid() { 208 MotionEventAndroid::~MotionEventAndroid() {
230 if (should_recycle_) 209 if (should_recycle_)
231 Java_MotionEvent_recycle(AttachCurrentThread(), event_.obj()); 210 Java_MotionEvent_recycle(AttachCurrentThread(), event_.obj());
232 } 211 }
233 212
234 int MotionEventAndroid::GetId() const { 213 int MotionEventAndroid::GetId() const {
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 } 259 }
281 260
282 float MotionEventAndroid::GetTouchMajor(size_t pointer_index) const { 261 float MotionEventAndroid::GetTouchMajor(size_t pointer_index) const {
283 DCHECK_LT(pointer_index, cached_pointer_count_); 262 DCHECK_LT(pointer_index, cached_pointer_count_);
284 if (pointer_index < MAX_POINTERS_TO_CACHE) 263 if (pointer_index < MAX_POINTERS_TO_CACHE)
285 return cached_touch_majors_[pointer_index]; 264 return cached_touch_majors_[pointer_index];
286 return ToDips(Java_MotionEvent_getTouchMajorF_I( 265 return ToDips(Java_MotionEvent_getTouchMajorF_I(
287 AttachCurrentThread(), event_.obj(), pointer_index)); 266 AttachCurrentThread(), event_.obj(), pointer_index));
288 } 267 }
289 268
290 float MotionEventAndroid::GetTouchMinor(size_t pointer_index) const {
291 DCHECK_LT(pointer_index, cached_pointer_count_);
292 if (pointer_index < MAX_POINTERS_TO_CACHE)
293 return cached_touch_minors_[pointer_index];
294 return ToDips(Java_MotionEvent_getTouchMinorF_I(AttachCurrentThread(),
295 event_.obj(), pointer_index));
296 }
297
298 float MotionEventAndroid::GetOrientation(size_t pointer_index) const {
299 DCHECK_LT(pointer_index, cached_pointer_count_);
300 if (pointer_index < MAX_POINTERS_TO_CACHE)
301 return cached_orientations_[pointer_index];
302 return ToValidFloat(Java_MotionEvent_getOrientationF_I(
303 AttachCurrentThread(), event_.obj(), pointer_index));
304 }
305
306 float MotionEventAndroid::GetPressure(size_t pointer_index) const { 269 float MotionEventAndroid::GetPressure(size_t pointer_index) const {
307 DCHECK_LT(pointer_index, cached_pointer_count_); 270 DCHECK_LT(pointer_index, cached_pointer_count_);
308 return Java_MotionEvent_getPressureF_I( 271 return Java_MotionEvent_getPressureF_I(
309 AttachCurrentThread(), event_.obj(), pointer_index); 272 AttachCurrentThread(), event_.obj(), pointer_index);
310 } 273 }
311 274
312 base::TimeTicks MotionEventAndroid::GetEventTime() const { 275 base::TimeTicks MotionEventAndroid::GetEventTime() const {
313 return cached_time_; 276 return cached_time_;
314 } 277 }
315 278
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 return scoped_ptr<MotionEvent>( 330 return scoped_ptr<MotionEvent>(
368 new MotionEventAndroid(pix_to_dip_, 331 new MotionEventAndroid(pix_to_dip_,
369 AttachCurrentThread(), 332 AttachCurrentThread(),
370 Obtain(GetDownTime(), 333 Obtain(GetDownTime(),
371 GetEventTime(), 334 GetEventTime(),
372 MotionEventAndroid::ACTION_CANCEL, 335 MotionEventAndroid::ACTION_CANCEL,
373 position_pixels.x(), 336 position_pixels.x(),
374 position_pixels.y()).obj())); 337 position_pixels.y()).obj()));
375 } 338 }
376 339
340 float MotionEventAndroid::GetTouchMinor(size_t pointer_index) const {
341 return ToDips(Java_MotionEvent_getTouchMinorF_I(
342 AttachCurrentThread(), event_.obj(), pointer_index));
343 }
344
345 float MotionEventAndroid::GetOrientation() const {
346 return Java_MotionEvent_getOrientationF(AttachCurrentThread(), event_.obj());
347 }
348
377 base::TimeTicks MotionEventAndroid::GetDownTime() const { 349 base::TimeTicks MotionEventAndroid::GetDownTime() const {
378 return FromAndroidTime( 350 return FromAndroidTime(
379 Java_MotionEvent_getDownTime(AttachCurrentThread(), event_.obj())); 351 Java_MotionEvent_getDownTime(AttachCurrentThread(), event_.obj()));
380 } 352 }
381 353
382 float MotionEventAndroid::ToDips(float pixels) const { 354 float MotionEventAndroid::ToDips(float pixels) const {
383 return pixels * pix_to_dip_; 355 return pixels * pix_to_dip_;
384 } 356 }
385 357
386 gfx::PointF MotionEventAndroid::ToDips(const gfx::PointF& point_pixels) const { 358 gfx::PointF MotionEventAndroid::ToDips(const gfx::PointF& point_pixels) const {
(...skipping 22 matching lines...) Expand all
409 return Java_MotionEvent_obtainAVME_J_J_I_F_F_I(AttachCurrentThread(), 381 return Java_MotionEvent_obtainAVME_J_J_I_F_F_I(AttachCurrentThread(),
410 ToAndroidTime(down_time), 382 ToAndroidTime(down_time),
411 ToAndroidTime(event_time), 383 ToAndroidTime(event_time),
412 ToAndroidAction(action), 384 ToAndroidAction(action),
413 x_pixels, 385 x_pixels,
414 y_pixels, 386 y_pixels,
415 0); 387 0);
416 } 388 }
417 389
418 } // namespace content 390 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698