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

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

Issue 223673006: Support GestureBegin and GestureEnd in ui::GestureProvider (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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 4deeba2580f3a7a72928cd3cec30f4a401aa2f18..4e0516a3cf04d44dccb676d83808e63bb3e43bb1 100644
--- a/ui/events/gesture_detection/gesture_provider.cc
+++ b/ui/events/gesture_detection/gesture_provider.cc
@@ -76,7 +76,8 @@ GestureEventDetails CreateTapGestureDetails(EventType type,
// GestureProvider:::Config
-GestureProvider::Config::Config() : disable_click_delay(false) {}
+GestureProvider::Config::Config()
+ : disable_click_delay(false), send_aura_specific_gestures(false) {}
GestureProvider::Config::~Config() {}
@@ -604,7 +605,8 @@ GestureProvider::GestureProvider(const Config& config,
needs_show_press_event_(false),
needs_tap_ending_event_(false),
touch_scroll_in_progress_(false),
- pinch_in_progress_(false) {
+ pinch_in_progress_(false),
+ send_aura_specific_gestures_(false) {
DCHECK(client);
InitGestureDetectors(config);
}
@@ -617,6 +619,9 @@ bool GestureProvider::OnTouchEvent(const MotionEvent& event) {
if (!CanHandle(event))
return false;
+ if (send_aura_specific_gestures_)
+ SendGestureBeginOrEndIfNecessary(event);
jdduke (slow) 2014/04/03 20:17:16 But don't we want the GestureEnd to come after eve
tdresser 2014/04/03 21:14:41 Done.
+
const bool was_touch_scrolling_ = touch_scroll_in_progress_;
const bool in_scale_gesture =
scale_gesture_listener_->IsScaleGestureDetectionInProgress();
@@ -696,6 +701,7 @@ void GestureProvider::InitGestureDetectors(const Config& config) {
scale_gesture_listener_.reset(
new ScaleGestureListenerImpl(config.scale_gesture_detector_config, this));
+ send_aura_specific_gestures_ = config.send_aura_specific_gestures;
}
bool GestureProvider::CanHandle(const MotionEvent& event) const {
@@ -734,7 +740,8 @@ void GestureProvider::Send(const GestureEventData& gesture) {
// are SHOW_PRESS and TAP, potentially triggered by the double-tap
// delay timing out.
DCHECK(current_down_event_ || gesture.type == ET_GESTURE_TAP ||
- gesture.type == ET_GESTURE_SHOW_PRESS);
+ gesture.type == ET_GESTURE_SHOW_PRESS ||
+ gesture.type == ET_GESTURE_BEGIN);
switch (gesture.type) {
case ET_GESTURE_TAP_DOWN:
@@ -818,4 +825,21 @@ void GestureProvider::EndTouchScrollIfNecessary(base::TimeTicks time,
Send(CreateGesture(ET_GESTURE_SCROLL_END, time, 0, 0));
}
+void GestureProvider::SendGestureBeginOrEndIfNecessary(
+ const MotionEvent& event) {
+ switch(event.GetAction()) {
jdduke (slow) 2014/04/03 20:17:16 Might as well move the check for the condition her
tdresser 2014/04/03 21:14:41 Done.
+ case MotionEvent::ACTION_DOWN:
+ case MotionEvent::ACTION_POINTER_DOWN:
+ Send(CreateGesture(ET_GESTURE_BEGIN, event));
+ break;
+ case MotionEvent::ACTION_UP:
+ case MotionEvent::ACTION_POINTER_UP:
+ case MotionEvent::ACTION_CANCEL:
+ Send(CreateGesture(ET_GESTURE_END, event));
+ break;
+ case MotionEvent::ACTION_MOVE:
+ break;
+ }
+}
+
} // namespace ui

Powered by Google App Engine
This is Rietveld 408576698