From 7127b13e2ec4d6645dd95244c25bc43ad73581ad Mon Sep 17 00:00:00 2001 From: "sadrul@chromium.org" Date: Mon, 29 Oct 2012 16:50:35 +0000 Subject: gesture recognizer: Cleanup some code and fix a test. Introduce WaitUntilReceivedGesture to make sure the timing-dependant gestures (e.g. long-press) are tested properly. Also, fix a case of calling a virtual function from the GestureSequence constructor. BUG=157596 Review URL: https://codereview.chromium.org/11348003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@164658 0039d316-1c4b-4281-b951-d872f2087c98 --- ui/base/gestures/gesture_sequence.cc | 15 ++++++++++----- ui/base/gestures/gesture_sequence.h | 4 +--- 2 files changed, 11 insertions(+), 8 deletions(-) (limited to 'ui/base') diff --git a/ui/base/gestures/gesture_sequence.cc b/ui/base/gestures/gesture_sequence.cc index 2fbfac4..f3beb73 100644 --- a/ui/base/gestures/gesture_sequence.cc +++ b/ui/base/gestures/gesture_sequence.cc @@ -349,7 +349,6 @@ GestureSequence::GestureSequence(GestureEventHelper* helper) pinch_distance_start_(0.f), pinch_distance_current_(0.f), scroll_type_(ST_FREE), - long_press_timer_(CreateTimer()), point_count_(0), helper_(helper) { } @@ -545,7 +544,7 @@ GestureSequence::Gestures* GestureSequence::ProcessTouchEventForGesture( << " touch id: " << event.touch_id(); if (last_state == GS_PENDING_SYNTHETIC_CLICK && state_ != last_state) - long_press_timer_->Stop(); + GetLongPressTimer()->Stop(); // The set of point_ids must be contiguous and include 0. // When a touch point is released, all points with ids greater than the @@ -610,6 +609,12 @@ base::OneShotTimer* GestureSequence::CreateTimer() { return new base::OneShotTimer(); } +base::OneShotTimer* GestureSequence::GetLongPressTimer() { + if (!long_press_timer_.get()) + long_press_timer_.reset(CreateTimer()); + return long_press_timer_.get(); +} + //////////////////////////////////////////////////////////////////////////////// // GestureSequence Private: @@ -917,7 +922,7 @@ bool GestureSequence::TouchDown(const TouchEvent& event, Gestures* gestures) { DCHECK(state_ == GS_NO_GESTURE); AppendTapDownGestureEvent(point, gestures); - long_press_timer_->Start( + GetLongPressTimer()->Start( FROM_HERE, base::TimeDelta::FromMilliseconds( GestureConfiguration::long_press_time_in_seconds() * 1000), @@ -1136,7 +1141,7 @@ bool GestureSequence::MaybeSwipe(const TouchEvent& event, } void GestureSequence::StopLongPressTimerIfRequired(const TouchEvent& event) { - if (!long_press_timer_->IsRunning() || + if (!GetLongPressTimer()->IsRunning() || event.type() != ui::ET_TOUCH_MOVED) return; @@ -1144,7 +1149,7 @@ void GestureSequence::StopLongPressTimerIfRequired(const TouchEvent& event) { const GesturePoint* point = GetPointByPointId(0); if (!ui::gestures::IsInsideManhattanSquare(point->first_touch_position(), event.location())) - long_press_timer_->Stop(); + GetLongPressTimer()->Stop(); } } // namespace ui diff --git a/ui/base/gestures/gesture_sequence.h b/ui/base/gestures/gesture_sequence.h index daa42bd..848ce86 100644 --- a/ui/base/gestures/gesture_sequence.h +++ b/ui/base/gestures/gesture_sequence.h @@ -54,9 +54,7 @@ class UI_EXPORT GestureSequence { protected: virtual base::OneShotTimer* CreateTimer(); - base::OneShotTimer* long_press_timer() { - return long_press_timer_.get(); - } + base::OneShotTimer* GetLongPressTimer(); private: // Recreates the axis-aligned bounding box that contains all the touch-points -- cgit v1.1