diff options
author | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-29 16:50:35 +0000 |
---|---|---|
committer | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-29 16:50:35 +0000 |
commit | 7127b13e2ec4d6645dd95244c25bc43ad73581ad (patch) | |
tree | 411135cf79510dc891d5535a1b74b41bc32e2f63 /ui/base | |
parent | dc0fd5f0a4d0afb62f930ea95382934991f10332 (diff) | |
download | chromium_src-7127b13e2ec4d6645dd95244c25bc43ad73581ad.zip chromium_src-7127b13e2ec4d6645dd95244c25bc43ad73581ad.tar.gz chromium_src-7127b13e2ec4d6645dd95244c25bc43ad73581ad.tar.bz2 |
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
Diffstat (limited to 'ui/base')
-rw-r--r-- | ui/base/gestures/gesture_sequence.cc | 15 | ||||
-rw-r--r-- | ui/base/gestures/gesture_sequence.h | 4 |
2 files changed, 11 insertions, 8 deletions
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>* GestureSequence::CreateTimer() { return new base::OneShotTimer<GestureSequence>(); } +base::OneShotTimer<GestureSequence>* 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<GestureSequence>* CreateTimer(); - base::OneShotTimer<GestureSequence>* long_press_timer() { - return long_press_timer_.get(); - } + base::OneShotTimer<GestureSequence>* GetLongPressTimer(); private: // Recreates the axis-aligned bounding box that contains all the touch-points |