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

Unified Diff: ui/events/android/motion_event_android.cc

Issue 2708613002: Add EventForwarder for routing touch events (Closed)
Patch Set: EventForwarder... Created 3 years, 9 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
« no previous file with comments | « ui/events/android/motion_event_android.h ('k') | ui/events/android/motion_event_android_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/events/android/motion_event_android.cc
diff --git a/ui/events/android/motion_event_android.cc b/ui/events/android/motion_event_android.cc
index 8e99aa3866b8d2e05e6d01c584f65f49eb460b4c..4af424da30d55d262f7afb246fc5f128d4712fb9 100644
--- a/ui/events/android/motion_event_android.cc
+++ b/ui/events/android/motion_event_android.cc
@@ -15,6 +15,7 @@
#include "ui/events/event_utils.h"
using base::android::AttachCurrentThread;
+using base::android::ScopedJavaLocalRef;
using namespace JNI_MotionEvent;
namespace ui {
@@ -188,6 +189,7 @@ MotionEventAndroid::MotionEventAndroid(float pix_to_dip,
jint pointer_count,
jint history_size,
jint action_index,
+ jint android_action_button,
jint android_button_state,
jint android_meta_state,
jfloat raw_offset_x_pixels,
@@ -200,6 +202,7 @@ MotionEventAndroid::MotionEventAndroid(float pix_to_dip,
cached_pointer_count_(pointer_count),
cached_history_size_(ToValidHistorySize(history_size, cached_action_)),
cached_action_index_(action_index),
+ cached_action_button_(android_action_button),
cached_button_state_(FromAndroidButtonState(android_button_state)),
cached_flags_(ToEventFlags(android_meta_state, android_button_state)),
cached_raw_position_offset_(ToDips(raw_offset_x_pixels),
@@ -217,6 +220,32 @@ MotionEventAndroid::MotionEventAndroid(float pix_to_dip,
cached_pointers_[1] = FromAndroidPointer(*pointer1);
}
+MotionEventAndroid::MotionEventAndroid(const MotionEventAndroid& e)
+ : event_(e.event_),
+ pix_to_dip_(e.pix_to_dip_),
+ cached_time_(e.cached_time_),
+ cached_action_(e.cached_action_),
+ cached_pointer_count_(e.cached_pointer_count_),
+ cached_history_size_(e.cached_history_size_),
+ cached_action_index_(e.cached_action_index_),
+ cached_action_button_(e.cached_action_button_),
+ cached_button_state_(e.cached_button_state_),
+ cached_flags_(e.cached_flags_),
+ cached_raw_position_offset_(e.cached_raw_position_offset_),
+ unique_event_id_(ui::GetNextTouchEventId()) {
+ for (size_t i = 0; i < cached_pointer_count_; i++)
+ cached_pointers_[i] = e.cached_pointers_[i];
+}
+
+std::unique_ptr<MotionEventAndroid> MotionEventAndroid::Offset(float x,
+ float y) const {
+ std::unique_ptr<MotionEventAndroid> event(new MotionEventAndroid(*this));
+ for (size_t i = 0; i < cached_pointer_count_; i++) {
+ event->cached_pointers_[i] = OffsetCachedPointer(cached_pointers_[i], x, y);
+ }
+ return event;
+}
+
MotionEventAndroid::~MotionEventAndroid() {
}
@@ -228,6 +257,14 @@ MotionEventAndroid::Action MotionEventAndroid::GetAction() const {
return cached_action_;
}
+int MotionEventAndroid::GetActionButton() const {
+ return cached_action_button_;
+}
+
+ScopedJavaLocalRef<jobject> MotionEventAndroid::GetJavaObject() const {
+ return ScopedJavaLocalRef<jobject>(event_);
+}
+
int MotionEventAndroid::GetActionIndex() const {
DCHECK(cached_action_ == MotionEvent::ACTION_POINTER_UP ||
cached_action_ == MotionEvent::ACTION_POINTER_DOWN)
@@ -388,4 +425,20 @@ MotionEventAndroid::CachedPointer MotionEventAndroid::FromAndroidPointer(
return result;
}
-} // namespace content
+MotionEventAndroid::CachedPointer MotionEventAndroid::OffsetCachedPointer(
+ const CachedPointer& pointer,
+ float x,
+ float y) const {
+ CachedPointer result;
+ result.id = pointer.id;
+ result.position = gfx::PointF(pointer.position.x() + ToDips(x),
+ pointer.position.y() + ToDips(y));
+ result.touch_major = pointer.touch_major;
+ result.touch_minor = pointer.touch_minor;
+ result.orientation = pointer.orientation;
+ result.tilt = pointer.tilt;
+ result.tool_type = pointer.tool_type;
+ return result;
+}
+
+} // namespace ui
« no previous file with comments | « ui/events/android/motion_event_android.h ('k') | ui/events/android/motion_event_android_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698