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

Unified Diff: ui/events/gesture_detection/gesture_provider.cc

Issue 212663010: Store the id of a contributing motion event in GestureEventData (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Update test. Created 6 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
Index: ui/events/gesture_detection/gesture_provider.cc
diff --git a/ui/events/gesture_detection/gesture_provider.cc b/ui/events/gesture_detection/gesture_provider.cc
index eb1794d32dfcf1c927b86fb6443a6ca8c301e76b..d965bf0cbbec1180bba97b4d50f22baee61e9bc6 100644
--- a/ui/events/gesture_detection/gesture_provider.cc
+++ b/ui/events/gesture_detection/gesture_provider.cc
@@ -31,30 +31,37 @@ const char* GetMotionEventActionName(MotionEvent::Action action) {
}
GestureEventData CreateGesture(EventType type,
+ int motion_event_id,
base::TimeTicks time,
float x,
float y,
const GestureEventDetails& details) {
- return GestureEventData(type, time, x, y, details);
+ return GestureEventData(type, motion_event_id, time, x, y, details);
}
GestureEventData CreateGesture(EventType type,
+ int motion_event_id,
base::TimeTicks time,
float x,
float y) {
- return GestureEventData(type, time, x, y);
+ return GestureEventData(type, motion_event_id, time, x, y);
}
GestureEventData CreateGesture(EventType type,
const MotionEvent& event,
const GestureEventDetails& details) {
- return CreateGesture(
- type, event.GetEventTime(), event.GetX(), event.GetY(), details);
+ return CreateGesture(type,
+ event.GetId(),
+ event.GetEventTime(),
+ event.GetX(),
+ event.GetY(),
+ details);
}
GestureEventData CreateGesture(EventType type,
const MotionEvent& event) {
- return CreateGesture(type, event.GetEventTime(), event.GetX(), event.GetY());
+ return CreateGesture(
+ type, event.GetId(), event.GetEventTime(), event.GetX(), event.GetY());
}
GestureEventDetails CreateTapGestureDetails(EventType type,
@@ -103,27 +110,31 @@ class GestureProvider::ScaleGestureListenerImpl
}
// ScaleGestureDetector::ScaleGestureListener implementation.
- virtual bool OnScaleBegin(const ScaleGestureDetector& detector) OVERRIDE {
+ virtual bool OnScaleBegin(const ScaleGestureDetector& detector,
+ const MotionEvent& e) OVERRIDE {
if (ignore_multitouch_events_ && !detector.InDoubleTapMode())
return false;
pinch_event_sent_ = false;
return true;
}
- virtual void OnScaleEnd(const ScaleGestureDetector& detector) OVERRIDE {
+ virtual void OnScaleEnd(const ScaleGestureDetector& detector,
+ const MotionEvent& e) OVERRIDE {
if (!pinch_event_sent_)
return;
- provider_->Send(
- CreateGesture(ET_GESTURE_PINCH_END, detector.GetEventTime(), 0, 0));
+ provider_->Send(CreateGesture(
+ ET_GESTURE_PINCH_END, e.GetId(), detector.GetEventTime(), 0, 0));
pinch_event_sent_ = false;
}
- virtual bool OnScale(const ScaleGestureDetector& detector) OVERRIDE {
+ virtual bool OnScale(const ScaleGestureDetector& detector,
+ const MotionEvent& e) OVERRIDE {
if (ignore_multitouch_events_ && !detector.InDoubleTapMode())
return false;
if (!pinch_event_sent_) {
pinch_event_sent_ = true;
provider_->Send(CreateGesture(ET_GESTURE_PINCH_BEGIN,
+ e.GetId(),
detector.GetEventTime(),
detector.GetFocusX(),
detector.GetFocusY()));
@@ -147,6 +158,7 @@ class GestureProvider::ScaleGestureListenerImpl
}
GestureEventDetails pinch_details(ET_GESTURE_PINCH_UPDATE, scale, 0);
provider_->Send(CreateGesture(ET_GESTURE_PINCH_UPDATE,
+ e.GetId(),
detector.GetEventTime(),
detector.GetFocusX(),
detector.GetFocusY(),
@@ -293,6 +305,7 @@ class GestureProvider::GestureListenerImpl
GestureEventDetails scroll_details(
ET_GESTURE_SCROLL_BEGIN, -raw_distance_x, -raw_distance_y);
provider_->Send(CreateGesture(ET_GESTURE_SCROLL_BEGIN,
+ e2.GetId(),
e2.GetEventTime(),
e1.GetX(),
e1.GetY(),
@@ -332,8 +345,7 @@ class GestureProvider::GestureListenerImpl
}
}
- provider_->Fling(
- e2.GetEventTime(), e1.GetX(), e1.GetY(), velocity_x, velocity_y);
+ provider_->Fling(e2, velocity_x, velocity_y);
return true;
}
@@ -551,7 +563,7 @@ bool GestureProvider::OnTouchEvent(const MotionEvent& event) {
event.GetAction() == MotionEvent::ACTION_CANCEL) {
// Note: This call will have no effect if a fling was just generated, as
// |Fling()| will have already signalled an end to touch-scrolling.
- EndTouchScrollIfNecessary(event.GetEventTime(), true);
+ EndTouchScrollIfNecessary(event, true);
// We shouldn't necessarily cancel a tap on ACTION_UP, as the double-tap
// timeout may yet trigger a SINGLE_TAP.
@@ -629,13 +641,11 @@ bool GestureProvider::CanHandle(const MotionEvent& event) const {
return event.GetAction() == MotionEvent::ACTION_DOWN || current_down_event_;
}
-void GestureProvider::Fling(base::TimeTicks time,
- float x,
- float y,
+void GestureProvider::Fling(const MotionEvent& event,
float velocity_x,
float velocity_y) {
if (!velocity_x && !velocity_y) {
- EndTouchScrollIfNecessary(time, true);
+ EndTouchScrollIfNecessary(event, true);
return;
}
@@ -646,13 +656,14 @@ void GestureProvider::Fling(base::TimeTicks time,
// start hint.
GestureEventDetails scroll_details(
ET_GESTURE_SCROLL_BEGIN, velocity_x, velocity_y);
- Send(CreateGesture(ET_GESTURE_SCROLL_BEGIN, time, x, y, scroll_details));
+ Send(CreateGesture(ET_GESTURE_SCROLL_BEGIN, event, scroll_details));
}
- EndTouchScrollIfNecessary(time, false);
+ EndTouchScrollIfNecessary(event, false);
GestureEventDetails fling_details(
ET_SCROLL_FLING_START, velocity_x, velocity_y);
- Send(CreateGesture(ET_SCROLL_FLING_START, time, x, y, fling_details));
+ Send(CreateGesture(
+ ET_SCROLL_FLING_START, event, fling_details));
}
void GestureProvider::Send(const GestureEventData& gesture) {
@@ -672,8 +683,11 @@ void GestureProvider::Send(const GestureEventData& gesture) {
break;
case ET_GESTURE_TAP:
if (needs_show_press_event_)
- Send(CreateGesture(
- ET_GESTURE_SHOW_PRESS, gesture.time, gesture.x, gesture.y));
+ Send(CreateGesture(ET_GESTURE_SHOW_PRESS,
+ gesture.motion_event_id,
+ gesture.time,
+ gesture.x,
+ gesture.y));
needs_tap_ending_event_ = false;
break;
case ET_GESTURE_DOUBLE_TAP:
@@ -697,15 +711,18 @@ void GestureProvider::Send(const GestureEventData& gesture) {
break;
case ET_GESTURE_SCROLL_BEGIN:
touch_scroll_in_progress_ = true;
- SendTapCancelIfNecessary(*current_down_event_);
+ SendTapCancelIfNecessary(gesture);
break;
case ET_GESTURE_SCROLL_END:
touch_scroll_in_progress_ = false;
break;
case ET_GESTURE_PINCH_BEGIN:
if (!touch_scroll_in_progress_)
- Send(CreateGesture(
- ET_GESTURE_SCROLL_BEGIN, gesture.time, gesture.x, gesture.y));
+ Send(CreateGesture(ET_GESTURE_SCROLL_BEGIN,
+ gesture.motion_event_id,
+ gesture.time,
+ gesture.x,
+ gesture.y));
pinch_in_progress_ = true;
break;
case ET_GESTURE_PINCH_END:
@@ -725,6 +742,18 @@ void GestureProvider::SendTapCancelIfNecessary(const MotionEvent& event) {
Send(CreateGesture(ET_GESTURE_TAP_CANCEL, event));
}
+void GestureProvider::SendTapCancelIfNecessary(
+ const GestureEventData& gesture) {
+ if (!needs_tap_ending_event_)
+ return;
+ current_longpress_time_ = base::TimeTicks();
+ Send(CreateGesture(ET_GESTURE_TAP_CANCEL,
+ gesture.motion_event_id,
+ gesture.time,
+ gesture.x,
+ gesture.y));
+}
+
bool GestureProvider::SendLongTapIfNecessary(const MotionEvent& event) {
if (event.GetAction() == MotionEvent::ACTION_UP &&
!current_longpress_time_.is_null() &&
@@ -739,13 +768,13 @@ bool GestureProvider::SendLongTapIfNecessary(const MotionEvent& event) {
return false;
}
-void GestureProvider::EndTouchScrollIfNecessary(base::TimeTicks time,
+void GestureProvider::EndTouchScrollIfNecessary(const MotionEvent& event,
bool send_scroll_end_event) {
if (!touch_scroll_in_progress_)
return;
touch_scroll_in_progress_ = false;
if (send_scroll_end_event)
- Send(CreateGesture(ET_GESTURE_SCROLL_END, time, 0, 0));
+ Send(CreateGesture(ET_GESTURE_SCROLL_END, event));
}
void GestureProvider::UpdateDoubleTapDetectionSupport() {
« no previous file with comments | « ui/events/gesture_detection/gesture_provider.h ('k') | ui/events/gesture_detection/gesture_provider_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698