diff options
author | girard@chromium.org <girard@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-17 21:26:36 +0000 |
---|---|---|
committer | girard@chromium.org <girard@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-17 21:26:36 +0000 |
commit | b8573aa643b03a59f4e2c99c72d3511a11cfb0b6 (patch) | |
tree | 319cee92ca68fa9260486bb4d87c950a64652f1c | |
parent | 6113e611df95cb143b61cdbb4eefa07d231d1dd2 (diff) | |
download | chromium_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.gyp | 2 | ||||
-rw-r--r-- | ui/aura/gestures/gesture_configuration.cc | 20 | ||||
-rw-r--r-- | ui/aura/gestures/gesture_configuration.h | 82 | ||||
-rw-r--r-- | ui/aura/gestures/gesture_point.cc | 29 | ||||
-rw-r--r-- | ui/aura/gestures/gesture_sequence.cc | 19 |
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( |