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

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

Issue 335943002: [Android] Composited selection handle rendering (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@input_native_handles_final
Patch Set: Clean up paste popup interaction Created 6 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 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 "jni/MotionEvent_jni.h" 8 #include "jni/MotionEvent_jni.h"
9 9
10 using base::android::AttachCurrentThread; 10 using base::android::AttachCurrentThread;
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 cached_touch_majors_[1] = ToDips(touch_major_1_pixels); 139 cached_touch_majors_[1] = ToDips(touch_major_1_pixels);
140 cached_raw_position_offset_ = 140 cached_raw_position_offset_ =
141 ToDips(gfx::PointF(raw_pos_x_pixels, raw_pos_y_pixels)) - 141 ToDips(gfx::PointF(raw_pos_x_pixels, raw_pos_y_pixels)) -
142 cached_positions_[0]; 142 cached_positions_[0];
143 cached_tool_types_[0] = FromAndroidToolType(android_tool_type_0); 143 cached_tool_types_[0] = FromAndroidToolType(android_tool_type_0);
144 cached_tool_types_[1] = FromAndroidToolType(android_tool_type_1); 144 cached_tool_types_[1] = FromAndroidToolType(android_tool_type_1);
145 } 145 }
146 146
147 MotionEventAndroid::MotionEventAndroid(float pix_to_dip, 147 MotionEventAndroid::MotionEventAndroid(float pix_to_dip,
148 JNIEnv* env, 148 JNIEnv* env,
149 jobject event) 149 jobject event,
150 bool should_recycle)
cjhopman 2014/07/09 22:29:12 So this constructor makes like ~16 jni calls (and
jdduke (slow) 2014/07/10 02:08:39 Agreed, I'll take a closer look at this. I think
150 : cached_time_(FromAndroidTime(Java_MotionEvent_getEventTime(env, event))), 151 : cached_time_(FromAndroidTime(Java_MotionEvent_getEventTime(env, event))),
151 cached_action_( 152 cached_action_(
152 FromAndroidAction(Java_MotionEvent_getActionMasked(env, event))), 153 FromAndroidAction(Java_MotionEvent_getActionMasked(env, event))),
153 cached_pointer_count_(Java_MotionEvent_getPointerCount(env, event)), 154 cached_pointer_count_(Java_MotionEvent_getPointerCount(env, event)),
154 cached_history_size_(Java_MotionEvent_getHistorySize(env, event)), 155 cached_history_size_(Java_MotionEvent_getHistorySize(env, event)),
155 cached_action_index_(Java_MotionEvent_getActionIndex(env, event)), 156 cached_action_index_(Java_MotionEvent_getActionIndex(env, event)),
156 cached_button_state_( 157 cached_button_state_(
157 FromAndroidButtonState(Java_MotionEvent_getButtonState(env, event))), 158 FromAndroidButtonState(Java_MotionEvent_getButtonState(env, event))),
158 pix_to_dip_(pix_to_dip), 159 pix_to_dip_(pix_to_dip),
159 should_recycle_(true) { 160 should_recycle_(should_recycle) {
160 event_.Reset(env, event); 161 event_.Reset(env, event);
161 DCHECK(event_.obj()); 162 DCHECK(event_.obj());
162 163
163 for (size_t i = 0; i < MAX_POINTERS_TO_CACHE; ++i) { 164 for (size_t i = 0; i < MAX_POINTERS_TO_CACHE; ++i) {
164 if (i < cached_pointer_count_) { 165 if (i < cached_pointer_count_) {
165 cached_positions_[i] = 166 cached_positions_[i] =
166 ToDips(gfx::PointF(Java_MotionEvent_getXF_I(env, event, i), 167 ToDips(gfx::PointF(Java_MotionEvent_getXF_I(env, event, i),
167 Java_MotionEvent_getYF_I(env, event, i))); 168 Java_MotionEvent_getYF_I(env, event, i)));
168 cached_pointer_ids_[i] = Java_MotionEvent_getPointerId(env, event, i); 169 cached_pointer_ids_[i] = Java_MotionEvent_getPointerId(env, event, i);
169 cached_touch_majors_[i] = 170 cached_touch_majors_[i] =
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 319
319 scoped_ptr<ui::MotionEvent> MotionEventAndroid::Clone() const { 320 scoped_ptr<ui::MotionEvent> MotionEventAndroid::Clone() const {
320 return scoped_ptr<MotionEvent>(new MotionEventAndroid(*this)); 321 return scoped_ptr<MotionEvent>(new MotionEventAndroid(*this));
321 } 322 }
322 323
323 scoped_ptr<ui::MotionEvent> MotionEventAndroid::Cancel() const { 324 scoped_ptr<ui::MotionEvent> MotionEventAndroid::Cancel() const {
324 // The input coordinates to |MotionEventAndroid| are always in device pixels, 325 // The input coordinates to |MotionEventAndroid| are always in device pixels,
325 // but the cached coordinates are in DIPs. 326 // but the cached coordinates are in DIPs.
326 const gfx::PointF position_pixels = 327 const gfx::PointF position_pixels =
327 gfx::ScalePoint(cached_positions_[0], 1.f / pix_to_dip_); 328 gfx::ScalePoint(cached_positions_[0], 1.f / pix_to_dip_);
329 const bool recycle = true;
328 return scoped_ptr<MotionEvent>( 330 return scoped_ptr<MotionEvent>(
329 new MotionEventAndroid(pix_to_dip_, 331 new MotionEventAndroid(pix_to_dip_,
330 AttachCurrentThread(), 332 AttachCurrentThread(),
331 Obtain(GetDownTime(), 333 Obtain(GetDownTime(),
332 GetEventTime(), 334 GetEventTime(),
333 MotionEventAndroid::ACTION_CANCEL, 335 MotionEventAndroid::ACTION_CANCEL,
334 position_pixels.x(), 336 position_pixels.x(),
335 position_pixels.y()).obj())); 337 position_pixels.y()).obj(),
338 recycle));
336 } 339 }
337 340
338 float MotionEventAndroid::GetTouchMinor(size_t pointer_index) const { 341 float MotionEventAndroid::GetTouchMinor(size_t pointer_index) const {
339 return ToDips(Java_MotionEvent_getTouchMinorF_I( 342 return ToDips(Java_MotionEvent_getTouchMinorF_I(
340 AttachCurrentThread(), event_.obj(), pointer_index)); 343 AttachCurrentThread(), event_.obj(), pointer_index));
341 } 344 }
342 345
343 float MotionEventAndroid::GetOrientation() const { 346 float MotionEventAndroid::GetOrientation() const {
344 return Java_MotionEvent_getOrientationF(AttachCurrentThread(), event_.obj()); 347 return Java_MotionEvent_getOrientationF(AttachCurrentThread(), event_.obj());
345 } 348 }
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
379 return Java_MotionEvent_obtainAVME_J_J_I_F_F_I(AttachCurrentThread(), 382 return Java_MotionEvent_obtainAVME_J_J_I_F_F_I(AttachCurrentThread(),
380 ToAndroidTime(down_time), 383 ToAndroidTime(down_time),
381 ToAndroidTime(event_time), 384 ToAndroidTime(event_time),
382 ToAndroidAction(action), 385 ToAndroidAction(action),
383 x_pixels, 386 x_pixels,
384 y_pixels, 387 y_pixels,
385 0); 388 0);
386 } 389 }
387 390
388 } // namespace content 391 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698