12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#ifndef UI_EVENTS_GESTURES_GESTURE_CONFIGURATION_H_ 668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#define UI_EVENTS_GESTURES_GESTURE_CONFIGURATION_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 9010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "ui/events/events_base_export.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ui { 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO: Expand this design to support multiple OS configuration 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// approaches (windows, chrome, others). This would turn into an 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// abstract base class. 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class EVENTS_BASE_EXPORT GestureConfiguration { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Ordered alphabetically ignoring underscores, to align with the 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // associated list of prefs in gesture_prefs_aura.cc. 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static int default_radius() { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return default_radius_; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void set_default_radius(int radius) { default_radius_ = radius; } 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static int fling_max_cancel_to_down_time_in_ms() { 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return fling_max_cancel_to_down_time_in_ms_; 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static void set_fling_max_cancel_to_down_time_in_ms(int val) { 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) fling_max_cancel_to_down_time_in_ms_ = val; 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static int fling_max_tap_gap_time_in_ms() { 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return fling_max_tap_gap_time_in_ms_; 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static void set_fling_max_tap_gap_time_in_ms(int val) { 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) fling_max_tap_gap_time_in_ms_ = val; 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static double long_press_time_in_seconds() { 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return long_press_time_in_seconds_; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static double semi_long_press_time_in_seconds() { 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return semi_long_press_time_in_seconds_; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static double max_distance_for_two_finger_tap_in_pixels() { 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return max_distance_for_two_finger_tap_in_pixels_; 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void set_max_distance_for_two_finger_tap_in_pixels(double val) { 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) max_distance_for_two_finger_tap_in_pixels_ = val; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void set_long_press_time_in_seconds(double val) { 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) long_press_time_in_seconds_ = val; 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void set_semi_long_press_time_in_seconds(double val) { 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) semi_long_press_time_in_seconds_ = val; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static double max_seconds_between_double_click() { 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return max_seconds_between_double_click_; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void set_max_seconds_between_double_click(double val) { 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) max_seconds_between_double_click_ = val; 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static int max_separation_for_gesture_touches_in_pixels() { 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return max_separation_for_gesture_touches_in_pixels_; 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void set_max_separation_for_gesture_touches_in_pixels(int val) { 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) max_separation_for_gesture_touches_in_pixels_ = val; 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) static float max_swipe_deviation_angle() { 686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return max_swipe_deviation_angle_; 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) static void set_max_swipe_deviation_angle(float val) { 716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) max_swipe_deviation_angle_ = val; 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static double max_touch_down_duration_in_seconds_for_click() { 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return max_touch_down_duration_in_seconds_for_click_; 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void set_max_touch_down_duration_in_seconds_for_click(double val) { 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) max_touch_down_duration_in_seconds_for_click_ = val; 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static double max_touch_move_in_pixels_for_click() { 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return max_touch_move_in_pixels_for_click_; 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void set_max_touch_move_in_pixels_for_click(double val) { 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) max_touch_move_in_pixels_for_click_ = val; 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static double max_distance_between_taps_for_double_tap() { 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return max_distance_between_taps_for_double_tap_; 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void set_max_distance_between_taps_for_double_tap(double val) { 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) max_distance_between_taps_for_double_tap_ = val; 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static double min_distance_for_pinch_scroll_in_pixels() { 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return min_distance_for_pinch_scroll_in_pixels_; 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void set_min_distance_for_pinch_scroll_in_pixels(double val) { 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) min_distance_for_pinch_scroll_in_pixels_ = val; 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static double min_pinch_update_distance_in_pixels() { 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return min_pinch_update_distance_in_pixels_; 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void set_min_pinch_update_distance_in_pixels(double val) { 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) min_pinch_update_distance_in_pixels_ = val; 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static float min_scroll_velocity() { 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return min_scroll_velocity_; 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static void set_min_scroll_velocity(float val) { 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) min_scroll_velocity_ = val; 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static double min_swipe_speed() { 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return min_swipe_speed_; 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void set_min_swipe_speed(double val) { 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) min_swipe_speed_ = val; 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 115010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) static int min_scaling_span_in_pixels() { 116010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) return min_scaling_span_in_pixels_; 117010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) }; 118010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) static void set_min_scaling_span_in_pixels(int val) { 119010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) min_scaling_span_in_pixels_ = val; 120010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 1211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) static int show_press_delay_in_ms() { 1221e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return show_press_delay_in_ms_; 1231e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 1241e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) static int set_show_press_delay_in_ms(int val) { 1251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return show_press_delay_in_ms_ = val; 1261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 12746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) static int scroll_debounce_interval_in_ms() { 12846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) return scroll_debounce_interval_in_ms_; 12946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) } 13046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) static int set_scroll_debounce_interval_in_ms(int val) { 13146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) return scroll_debounce_interval_in_ms_ = val; 13246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) } 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static float fling_velocity_cap() { 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return fling_velocity_cap_; 1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static void set_fling_velocity_cap(float val) { 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) fling_velocity_cap_ = val; 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 139b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // TODO(davemoore): Move into chrome/browser/ui. 1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static int tab_scrub_activation_delay_in_ms() { 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return tab_scrub_activation_delay_in_ms_; 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static void set_tab_scrub_activation_delay_in_ms(int val) { 1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tab_scrub_activation_delay_in_ms_ = val; 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // These are listed in alphabetical order ignoring underscores, to 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // align with the associated list of preferences in 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // gesture_prefs_aura.cc. These two lists should be kept in sync. 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The default touch radius length used when the only information given 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // by the device is the touch center. 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static int default_radius_; 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The maximum allowed distance between two fingers for a two finger tap. If 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the distance between two fingers is greater than this value, we will not 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // recognize a two finger tap. 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static double max_distance_for_two_finger_tap_in_pixels_; 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Maximum time between a GestureFlingCancel and a mousedown such that the 1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // mousedown is considered associated with the cancel event. 1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static int fling_max_cancel_to_down_time_in_ms_; 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Maxium time between a mousedown/mouseup pair that is considered to be a 1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // suppressable tap. 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static int fling_max_tap_gap_time_in_ms_; 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static double long_press_time_in_seconds_; 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static double semi_long_press_time_in_seconds_; 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static double max_seconds_between_double_click_; 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static double max_separation_for_gesture_touches_in_pixels_; 1736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) static float max_swipe_deviation_angle_; 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static double max_touch_down_duration_in_seconds_for_click_; 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static double max_touch_move_in_pixels_for_click_; 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static double max_distance_between_taps_for_double_tap_; 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static double min_distance_for_pinch_scroll_in_pixels_; 1785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Only used with --compensate-for-unstable-pinch-zoom. 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static double min_pinch_update_distance_in_pixels_; 1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static float min_scroll_velocity_; 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static double min_swipe_speed_; 182010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) static int min_scaling_span_in_pixels_; 1831e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) static int show_press_delay_in_ms_; 18446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) static int scroll_debounce_interval_in_ms_; 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static float fling_velocity_cap_; 186b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) // TODO(davemoore): Move into chrome/browser/ui. 1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static int tab_scrub_activation_delay_in_ms_; 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(GestureConfiguration); 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace ui 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#endif // UI_EVENTS_GESTURES_GESTURE_CONFIGURATION_H_ 195