| 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
|
|
|