summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgirard@chromium.org <girard@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-17 21:26:36 +0000
committergirard@chromium.org <girard@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-17 21:26:36 +0000
commitb8573aa643b03a59f4e2c99c72d3511a11cfb0b6 (patch)
tree319cee92ca68fa9260486bb4d87c950a64652f1c
parent6113e611df95cb143b61cdbb4eefa07d231d1dd2 (diff)
downloadchromium_src-b8573aa643b03a59f4e2c99c72d3511a11cfb0b6.zip
chromium_src-b8573aa643b03a59f4e2c99c72d3511a11cfb0b6.tar.gz
chromium_src-b8573aa643b03a59f4e2c99c72d3511a11cfb0b6.tar.bz2
Add setters for the aura gesture recognizer constants.
BUG=113227 TEST=none Review URL: http://codereview.chromium.org/9372040 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@122586 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--ui/aura/aura.gyp2
-rw-r--r--ui/aura/gestures/gesture_configuration.cc20
-rw-r--r--ui/aura/gestures/gesture_configuration.h82
-rw-r--r--ui/aura/gestures/gesture_point.cc29
-rw-r--r--ui/aura/gestures/gesture_sequence.cc19
5 files changed, 124 insertions, 28 deletions
diff --git a/ui/aura/aura.gyp b/ui/aura/aura.gyp
index 22d78b3..5ab6a78 100644
--- a/ui/aura/aura.gyp
+++ b/ui/aura/aura.gyp
@@ -57,6 +57,8 @@
'event_mac.mm',
'event_mac.h',
'focus_manager.h',
+ 'gestures/gesture_configuration.cc',
+ 'gestures/gesture_configuration.h',
'gestures/gesture_recognizer.h',
'gestures/gesture_recognizer_aura.cc',
'gestures/gesture_recognizer_aura.h',
diff --git a/ui/aura/gestures/gesture_configuration.cc b/ui/aura/gestures/gesture_configuration.cc
new file mode 100644
index 0000000..198cfb1
--- /dev/null
+++ b/ui/aura/gestures/gesture_configuration.cc
@@ -0,0 +1,20 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ui/aura/gestures/gesture_configuration.h"
+
+namespace aura {
+
+double
+ GestureConfiguration::max_touch_down_duration_in_seconds_for_click_ = 0.8;
+double
+ GestureConfiguration::min_touch_down_duration_in_seconds_for_click_ = 0.01;
+double GestureConfiguration::max_seconds_between_double_click_ = 0.7;
+double GestureConfiguration::max_touch_move_in_pixels_for_click_ = 20;
+double GestureConfiguration::min_flick_speed_squared_ = 550.f * 550.f;
+double GestureConfiguration::buffered_points_ = 20;
+double GestureConfiguration::minimum_pinch_update_distance_in_pixels_ = 5;
+double GestureConfiguration::minimum_distance_for_pinch_scroll_in_pixels_ = 20;
+
+} // namespace aura
diff --git a/ui/aura/gestures/gesture_configuration.h b/ui/aura/gestures/gesture_configuration.h
new file mode 100644
index 0000000..b7f63d6
--- /dev/null
+++ b/ui/aura/gestures/gesture_configuration.h
@@ -0,0 +1,82 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef UI_AURA_GESTURES_GESTURE_CONFIGURATION_H_
+#define UI_AURA_GESTURES_GESTURE_CONFIGURATION_H_
+#pragma once
+
+#include "base/basictypes.h"
+
+namespace aura {
+
+// TODO: Expand this design to support multiple OS configuration
+// approaches (windows, chrome, others). This would turn into an
+// abstract base class.
+
+class GestureConfiguration {
+ public:
+ static double max_touch_down_duration_in_seconds_for_click() {
+ return max_touch_down_duration_in_seconds_for_click_;
+ }
+ static void set_max_touch_down_duration_in_seconds_for_click(double val) {
+ max_touch_down_duration_in_seconds_for_click_ = val;
+ }
+ static double min_touch_down_duration_in_seconds_for_click() {
+ return min_touch_down_duration_in_seconds_for_click_;
+ }
+ static void set_min_touch_down_duration_in_seconds_for_click(double val) {
+ min_touch_down_duration_in_seconds_for_click_ = val;
+ }
+ static double max_seconds_between_double_click() {
+ return max_seconds_between_double_click_;
+ }
+ static void set_max_seconds_between_double_click(double val) {
+ max_seconds_between_double_click_ = val;
+ }
+ static double max_touch_move_in_pixels_for_click() {
+ return max_touch_move_in_pixels_for_click_;
+ }
+ static void set_max_touch_move_in_pixels_for_click(double val) {
+ max_touch_move_in_pixels_for_click_ = val;
+ }
+ static double min_flick_speed_squared() {
+ return min_flick_speed_squared_;
+ }
+ static void set_min_flick_speed_squared(double val) {
+ min_flick_speed_squared_ = val;
+ }
+ static double buffered_points() {
+ return buffered_points_;
+ }
+ static void set_buffered_points(double val) {
+ buffered_points_ = val;
+ }
+ static double minimum_pinch_update_distance_in_pixels() {
+ return minimum_pinch_update_distance_in_pixels_;
+ }
+ static void set_minimum_pinch_update_distance_in_pixels(double val) {
+ minimum_pinch_update_distance_in_pixels_ = val;
+ }
+ static double minimum_distance_for_pinch_scroll_in_pixels() {
+ return minimum_distance_for_pinch_scroll_in_pixels_;
+ }
+ static void set_minimum_distance_for_pinch_scroll_in_pixels(double val) {
+ minimum_distance_for_pinch_scroll_in_pixels_ = val;
+ }
+ private:
+ static double max_touch_down_duration_in_seconds_for_click_;
+ static double min_touch_down_duration_in_seconds_for_click_;
+ static double max_seconds_between_double_click_;
+ static double max_touch_move_in_pixels_for_click_;
+ static double min_flick_speed_squared_;
+ static double buffered_points_;
+ static double minimum_pinch_update_distance_in_pixels_;
+ static double minimum_distance_for_pinch_scroll_in_pixels_;
+
+ DISALLOW_COPY_AND_ASSIGN(GestureConfiguration);
+};
+
+} // namespace aura
+
+#endif // UI_AURA_GESTURES_GESTURE_CONFIGURATION_H_
diff --git a/ui/aura/gestures/gesture_point.cc b/ui/aura/gestures/gesture_point.cc
index 78f32fb..30f278f 100644
--- a/ui/aura/gestures/gesture_point.cc
+++ b/ui/aura/gestures/gesture_point.cc
@@ -8,19 +8,11 @@
#include "base/basictypes.h"
#include "ui/aura/event.h"
+#include "ui/aura/gestures/gesture_configuration.h"
#include "ui/base/events.h"
namespace {
-// TODO(girard): Make these configurable in sync with
-// http://crbug.com/113227
-// It will be necessary to update gesture_recognizer_unittest when
-// these constants are made configurable.
-const double kMaximumTouchDownDurationInSecondsForClick = 0.8;
-const double kMinimumTouchDownDurationInSecondsForClick = 0.01;
-const double kMaximumSecondsBetweenDoubleClick = 0.7;
-const int kMaximumTouchMoveInPixelsForClick = 20;
-const float kMinFlickSpeedSquared = 550.f * 550.f;
const int kMinRailBreakVelocity = 200;
const int kMinScrollDeltaSquared = 5 * 5;
const int kRailBreakProportion = 15;
@@ -35,7 +27,7 @@ GesturePoint::GesturePoint()
: first_touch_time_(0.0),
last_touch_time_(0.0),
last_tap_time_(0.0),
- velocity_calculator_(kBufferedPoints) {
+ velocity_calculator_(GestureConfiguration::buffered_points()) {
}
GesturePoint::~GesturePoint() {}
@@ -145,30 +137,35 @@ bool GesturePoint::BreaksVerticalRail() {
bool GesturePoint::IsInClickTimeWindow() const {
double duration = last_touch_time_ - first_touch_time_;
- return duration >= kMinimumTouchDownDurationInSecondsForClick &&
- duration < kMaximumTouchDownDurationInSecondsForClick;
+ return duration >=
+ GestureConfiguration::min_touch_down_duration_in_seconds_for_click() &&
+ duration <
+ GestureConfiguration::max_touch_down_duration_in_seconds_for_click();
}
bool GesturePoint::IsInSecondClickTimeWindow() const {
double duration = last_touch_time_ - last_tap_time_;
- return duration < kMaximumSecondsBetweenDoubleClick;
+ return duration < GestureConfiguration::max_seconds_between_double_click();
}
bool GesturePoint::IsInsideManhattanSquare(const TouchEvent& event) const {
int manhattanDistance = abs(event.x() - first_touch_position_.x()) +
abs(event.y() - first_touch_position_.y());
- return manhattanDistance < kMaximumTouchMoveInPixelsForClick;
+ return manhattanDistance <
+ GestureConfiguration::max_touch_move_in_pixels_for_click();
}
bool GesturePoint::IsSecondClickInsideManhattanSquare(
const TouchEvent& event) const {
int manhattanDistance = abs(event.x() - last_tap_position_.x()) +
abs(event.y() - last_tap_position_.y());
- return manhattanDistance < kMaximumTouchMoveInPixelsForClick;
+ return manhattanDistance <
+ GestureConfiguration::max_touch_move_in_pixels_for_click();
}
bool GesturePoint::IsOverMinFlickSpeed() {
- return velocity_calculator_.VelocitySquared() > kMinFlickSpeedSquared;
+ return velocity_calculator_.VelocitySquared() >
+ GestureConfiguration::min_flick_speed_squared();
}
} // namespace aura
diff --git a/ui/aura/gestures/gesture_sequence.cc b/ui/aura/gestures/gesture_sequence.cc
index 471045d..c8bc40c 100644
--- a/ui/aura/gestures/gesture_sequence.cc
+++ b/ui/aura/gestures/gesture_sequence.cc
@@ -7,6 +7,7 @@
#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
#include "ui/aura/event.h"
+#include "ui/aura/gestures/gesture_configuration.h"
#include "ui/base/events.h"
// TODO(sad): Pinch gestures currently always assume that the first two
@@ -14,15 +15,6 @@
// always be the case. This needs to be fixed eventually.
// http://crbug.com/113144
-namespace {
-
-// TODO(girard): Make these configurable in sync with this CL
-// http://crbug.com/100773
-const float kMinimumPinchUpdateDistance = 5; // in pixels
-const float kMinimumDistanceForPinchScroll = 20;
-
-} // namespace
-
namespace aura {
namespace {
@@ -493,12 +485,15 @@ bool GestureSequence::PinchUpdate(const TouchEvent& event,
const GesturePoint& point, Gestures* gestures) {
DCHECK(state_ == GS_PINCH);
float distance = points_[0].Distance(points_[1]);
- if (abs(distance - pinch_distance_current_) < kMinimumPinchUpdateDistance) {
+ if (abs(distance - pinch_distance_current_) <
+ GestureConfiguration::minimum_pinch_update_distance_in_pixels()) {
// The fingers didn't move towards each other, or away from each other,
// enough to constitute a pinch. But perhaps they moved enough in the same
// direction to do a two-finger scroll.
- if (!points_[0].DidScroll(event, kMinimumDistanceForPinchScroll) ||
- !points_[1].DidScroll(event, kMinimumDistanceForPinchScroll))
+ if (!points_[0].DidScroll(event,
+ GestureConfiguration::minimum_distance_for_pinch_scroll_in_pixels()) ||
+ !points_[1].DidScroll(event,
+ GestureConfiguration::minimum_distance_for_pinch_scroll_in_pixels()))
return false;
gfx::Point center = points_[0].last_touch_position().Middle(