• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef UI_EVENTS_GESTURES_GESTURE_CONFIGURATION_H_
6 #define UI_EVENTS_GESTURES_GESTURE_CONFIGURATION_H_
7 
8 #include "base/basictypes.h"
9 #include "ui/events/events_base_export.h"
10 
11 namespace ui {
12 
13 // TODO: Expand this design to support multiple OS configuration
14 // approaches (windows, chrome, others).  This would turn into an
15 // abstract base class.
16 
17 class EVENTS_BASE_EXPORT GestureConfiguration {
18  public:
19   // Number of parameters in the array of parameters for the fling acceleration
20   // curve.
21   static const int NumAccelParams = 4;
22 
23   // Ordered alphabetically ignoring underscores, to align with the
24   // associated list of prefs in gesture_prefs_aura.cc.
default_radius()25   static int default_radius() {
26     return default_radius_;
27   }
set_default_radius(int radius)28   static void set_default_radius(int radius) { default_radius_ = radius; }
fling_max_cancel_to_down_time_in_ms()29   static int fling_max_cancel_to_down_time_in_ms() {
30     return fling_max_cancel_to_down_time_in_ms_;
31   }
set_fling_max_cancel_to_down_time_in_ms(int val)32   static void set_fling_max_cancel_to_down_time_in_ms(int val) {
33     fling_max_cancel_to_down_time_in_ms_ = val;
34   }
fling_max_tap_gap_time_in_ms()35   static int fling_max_tap_gap_time_in_ms() {
36     return fling_max_tap_gap_time_in_ms_;
37   }
set_fling_max_tap_gap_time_in_ms(int val)38   static void set_fling_max_tap_gap_time_in_ms(int val) {
39     fling_max_tap_gap_time_in_ms_ = val;
40   }
long_press_time_in_seconds()41   static double long_press_time_in_seconds() {
42     return long_press_time_in_seconds_;
43   }
semi_long_press_time_in_seconds()44   static double semi_long_press_time_in_seconds() {
45     return semi_long_press_time_in_seconds_;
46   }
max_distance_for_two_finger_tap_in_pixels()47   static double max_distance_for_two_finger_tap_in_pixels() {
48     return max_distance_for_two_finger_tap_in_pixels_;
49   }
set_max_distance_for_two_finger_tap_in_pixels(double val)50   static void set_max_distance_for_two_finger_tap_in_pixels(double val) {
51     max_distance_for_two_finger_tap_in_pixels_ = val;
52   }
max_radius()53   static int max_radius() {
54     return max_radius_;
55   }
set_long_press_time_in_seconds(double val)56   static void set_long_press_time_in_seconds(double val) {
57     long_press_time_in_seconds_ = val;
58   }
set_semi_long_press_time_in_seconds(double val)59   static void set_semi_long_press_time_in_seconds(double val) {
60     semi_long_press_time_in_seconds_ = val;
61   }
max_seconds_between_double_click()62   static double max_seconds_between_double_click() {
63     return max_seconds_between_double_click_;
64   }
set_max_seconds_between_double_click(double val)65   static void set_max_seconds_between_double_click(double val) {
66     max_seconds_between_double_click_ = val;
67   }
max_separation_for_gesture_touches_in_pixels()68   static int max_separation_for_gesture_touches_in_pixels() {
69     return max_separation_for_gesture_touches_in_pixels_;
70   }
set_max_separation_for_gesture_touches_in_pixels(int val)71   static void set_max_separation_for_gesture_touches_in_pixels(int val) {
72     max_separation_for_gesture_touches_in_pixels_ = val;
73   }
max_swipe_deviation_ratio()74   static double max_swipe_deviation_ratio() {
75     return max_swipe_deviation_ratio_;
76   }
set_max_swipe_deviation_ratio(double val)77   static void set_max_swipe_deviation_ratio(double val) {
78     max_swipe_deviation_ratio_ = val;
79   }
max_touch_down_duration_in_seconds_for_click()80   static double max_touch_down_duration_in_seconds_for_click() {
81     return max_touch_down_duration_in_seconds_for_click_;
82   }
set_max_touch_down_duration_in_seconds_for_click(double val)83   static void set_max_touch_down_duration_in_seconds_for_click(double val) {
84     max_touch_down_duration_in_seconds_for_click_ = val;
85   }
max_touch_move_in_pixels_for_click()86   static double max_touch_move_in_pixels_for_click() {
87     return max_touch_move_in_pixels_for_click_;
88   }
set_max_touch_move_in_pixels_for_click(double val)89   static void set_max_touch_move_in_pixels_for_click(double val) {
90     max_touch_move_in_pixels_for_click_ = val;
91   }
max_distance_between_taps_for_double_tap()92   static double max_distance_between_taps_for_double_tap() {
93     return max_distance_between_taps_for_double_tap_;
94   }
set_max_distance_between_taps_for_double_tap(double val)95   static void set_max_distance_between_taps_for_double_tap(double val) {
96     max_distance_between_taps_for_double_tap_ = val;
97   }
min_distance_for_pinch_scroll_in_pixels()98   static double min_distance_for_pinch_scroll_in_pixels() {
99     return min_distance_for_pinch_scroll_in_pixels_;
100   }
set_min_distance_for_pinch_scroll_in_pixels(double val)101   static void set_min_distance_for_pinch_scroll_in_pixels(double val) {
102     min_distance_for_pinch_scroll_in_pixels_ = val;
103   }
min_flick_speed_squared()104   static double min_flick_speed_squared() {
105     return min_flick_speed_squared_;
106   }
set_min_flick_speed_squared(double val)107   static void set_min_flick_speed_squared(double val) {
108     min_flick_speed_squared_ = val;
109   }
min_pinch_update_distance_in_pixels()110   static double min_pinch_update_distance_in_pixels() {
111     return min_pinch_update_distance_in_pixels_;
112   }
set_min_pinch_update_distance_in_pixels(double val)113   static void set_min_pinch_update_distance_in_pixels(double val) {
114     min_pinch_update_distance_in_pixels_ = val;
115   }
min_rail_break_velocity()116   static double min_rail_break_velocity() {
117     return min_rail_break_velocity_;
118   }
set_min_rail_break_velocity(double val)119   static void set_min_rail_break_velocity(double val) {
120     min_rail_break_velocity_ = val;
121   }
min_scroll_delta_squared()122   static double min_scroll_delta_squared() {
123     return min_scroll_delta_squared_;
124   }
set_min_scroll_delta_squared(double val)125   static void set_min_scroll_delta_squared(double val) {
126     min_scroll_delta_squared_ = val;
127   }
min_scroll_velocity()128   static float min_scroll_velocity() {
129     return min_scroll_velocity_;
130   }
set_min_scroll_velocity(float val)131   static void set_min_scroll_velocity(float val) {
132     min_scroll_velocity_ = val;
133   }
min_swipe_speed()134   static double min_swipe_speed() {
135     return min_swipe_speed_;
136   }
set_min_swipe_speed(double val)137   static void set_min_swipe_speed(double val) {
138     min_swipe_speed_ = val;
139   }
min_touch_down_duration_in_seconds_for_click()140   static double min_touch_down_duration_in_seconds_for_click() {
141     return min_touch_down_duration_in_seconds_for_click_;
142   }
set_min_touch_down_duration_in_seconds_for_click(double val)143   static void set_min_touch_down_duration_in_seconds_for_click(double val) {
144     min_touch_down_duration_in_seconds_for_click_ = val;
145   }
146 
min_scaling_span_in_pixels()147   static int min_scaling_span_in_pixels() {
148     return min_scaling_span_in_pixels_;
149   };
150 
set_min_scaling_span_in_pixels(int val)151   static void set_min_scaling_span_in_pixels(int val) {
152     min_scaling_span_in_pixels_ = val;
153   }
154 
points_buffered_for_velocity()155   static int points_buffered_for_velocity() {
156     return points_buffered_for_velocity_;
157   }
set_points_buffered_for_velocity(int val)158   static void set_points_buffered_for_velocity(int val) {
159     points_buffered_for_velocity_ = val;
160   }
rail_break_proportion()161   static double rail_break_proportion() {
162     return rail_break_proportion_;
163   }
set_rail_break_proportion(double val)164   static void set_rail_break_proportion(double val) {
165     rail_break_proportion_ = val;
166   }
rail_start_proportion()167   static double rail_start_proportion() {
168     return rail_start_proportion_;
169   }
set_rail_start_proportion(double val)170   static void set_rail_start_proportion(double val) {
171     rail_start_proportion_ = val;
172   }
scroll_prediction_seconds()173   static double scroll_prediction_seconds() {
174     return scroll_prediction_seconds_;
175   }
set_scroll_prediction_seconds(double val)176   static void set_scroll_prediction_seconds(double val) {
177     scroll_prediction_seconds_ = val;
178   }
show_press_delay_in_ms()179   static int show_press_delay_in_ms() {
180     return show_press_delay_in_ms_;
181   }
set_show_press_delay_in_ms(int val)182   static int set_show_press_delay_in_ms(int val) {
183     return show_press_delay_in_ms_ = val;
184   }
scroll_debounce_interval_in_ms()185   static int scroll_debounce_interval_in_ms() {
186     return scroll_debounce_interval_in_ms_;
187   }
set_scroll_debounce_interval_in_ms(int val)188   static int set_scroll_debounce_interval_in_ms(int val) {
189     return scroll_debounce_interval_in_ms_ = val;
190   }
set_fling_acceleration_curve_coefficients(int i,float val)191   static void set_fling_acceleration_curve_coefficients(int i, float val) {
192     fling_acceleration_curve_coefficients_[i] = val;
193   }
fling_acceleration_curve_coefficients(int i)194   static float fling_acceleration_curve_coefficients(int i) {
195     return fling_acceleration_curve_coefficients_[i];
196   }
fling_velocity_cap()197   static float fling_velocity_cap() {
198     return fling_velocity_cap_;
199   }
set_fling_velocity_cap(float val)200   static void set_fling_velocity_cap(float val) {
201     fling_velocity_cap_ = val;
202   }
203   // TODO(davemoore): Move into chrome/browser/ui.
tab_scrub_activation_delay_in_ms()204   static int tab_scrub_activation_delay_in_ms() {
205     return tab_scrub_activation_delay_in_ms_;
206   }
set_tab_scrub_activation_delay_in_ms(int val)207   static void set_tab_scrub_activation_delay_in_ms(int val) {
208     tab_scrub_activation_delay_in_ms_ = val;
209   }
210 
211  private:
212   // These are listed in alphabetical order ignoring underscores, to
213   // align with the associated list of preferences in
214   // gesture_prefs_aura.cc. These two lists should be kept in sync.
215 
216   // The default touch radius length used when the only information given
217   // by the device is the touch center.
218   static int default_radius_;
219 
220   // The maximum allowed distance between two fingers for a two finger tap. If
221   // the distance between two fingers is greater than this value, we will not
222   // recognize a two finger tap.
223   static double max_distance_for_two_finger_tap_in_pixels_;
224 
225   // The maximum allowed size for the radius of a touch region used in
226   // forming an ET_GESTURE_TAP event.
227   static int max_radius_;
228 
229   // Maximum time between a GestureFlingCancel and a mousedown such that the
230   // mousedown is considered associated with the cancel event.
231   static int fling_max_cancel_to_down_time_in_ms_;
232 
233   // Maxium time between a mousedown/mouseup pair that is considered to be a
234   // suppressable tap.
235   static int fling_max_tap_gap_time_in_ms_;
236 
237   static double long_press_time_in_seconds_;
238   static double semi_long_press_time_in_seconds_;
239   static double max_seconds_between_double_click_;
240   static double max_separation_for_gesture_touches_in_pixels_;
241   static double max_swipe_deviation_ratio_;
242   static double max_touch_down_duration_in_seconds_for_click_;
243   static double max_touch_move_in_pixels_for_click_;
244   static double max_distance_between_taps_for_double_tap_;
245   static double min_distance_for_pinch_scroll_in_pixels_;
246   static double min_flick_speed_squared_;
247   static double min_pinch_update_distance_in_pixels_;
248   static double min_rail_break_velocity_;
249   static double min_scroll_delta_squared_;
250   static float min_scroll_velocity_;
251   static double min_swipe_speed_;
252   static double min_touch_down_duration_in_seconds_for_click_;
253   static int min_scaling_span_in_pixels_;
254   static int points_buffered_for_velocity_;
255   static double rail_break_proportion_;
256   static double rail_start_proportion_;
257   static double scroll_prediction_seconds_;
258   static int show_press_delay_in_ms_;
259   static int scroll_debounce_interval_in_ms_;
260 
261   static float fling_acceleration_curve_coefficients_[NumAccelParams];
262   static float fling_velocity_cap_;
263   // TODO(davemoore): Move into chrome/browser/ui.
264   static int tab_scrub_activation_delay_in_ms_;
265 
266   DISALLOW_COPY_AND_ASSIGN(GestureConfiguration);
267 };
268 
269 }  // namespace ui
270 
271 #endif  // UI_EVENTS_GESTURES_GESTURE_CONFIGURATION_H_
272