summaryrefslogtreecommitdiffstats
path: root/ui/base
diff options
context:
space:
mode:
authorsadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-29 16:50:35 +0000
committersadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-29 16:50:35 +0000
commit7127b13e2ec4d6645dd95244c25bc43ad73581ad (patch)
tree411135cf79510dc891d5535a1b74b41bc32e2f63 /ui/base
parentdc0fd5f0a4d0afb62f930ea95382934991f10332 (diff)
downloadchromium_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.cc15
-rw-r--r--ui/base/gestures/gesture_sequence.h4
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