OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ui/events/gesture_detection/gesture_config_helper.h" | 5 #include "ui/events/gesture_detection/gesture_config_helper.h" |
6 | 6 |
7 #include <cmath> | 7 #include <cmath> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "ui/events/event_switches.h" | 10 #include "ui/events/event_switches.h" |
11 #include "ui/events/gestures/gesture_configuration.h" | 11 #include "ui/events/gestures/gesture_configuration.h" |
12 #include "ui/gfx/screen.h" | 12 #include "ui/gfx/screen.h" |
13 | 13 |
14 namespace ui { | 14 namespace ui { |
15 namespace { | 15 namespace { |
16 | 16 |
17 GestureDetector::Config DefaultGestureDetectorConfig() { | 17 GestureDetector::Config DefaultGestureDetectorConfig() { |
18 GestureDetector::Config config; | 18 GestureDetector::Config config; |
19 | 19 |
20 config.longpress_timeout = base::TimeDelta::FromMilliseconds( | 20 config.longpress_timeout = base::TimeDelta::FromMilliseconds( |
21 GestureConfiguration::long_press_time_in_seconds() * 1000.); | 21 GestureConfiguration::long_press_time_in_ms()); |
22 config.showpress_timeout = base::TimeDelta::FromMilliseconds( | 22 config.showpress_timeout = base::TimeDelta::FromMilliseconds( |
23 GestureConfiguration::show_press_delay_in_ms()); | 23 GestureConfiguration::show_press_delay_in_ms()); |
24 config.double_tap_timeout = base::TimeDelta::FromMilliseconds( | 24 config.double_tap_timeout = base::TimeDelta::FromMilliseconds( |
25 GestureConfiguration::semi_long_press_time_in_seconds() * 1000.); | 25 GestureConfiguration::semi_long_press_time_in_ms()); |
26 config.touch_slop = | 26 config.touch_slop = |
27 GestureConfiguration::max_touch_move_in_pixels_for_click(); | 27 GestureConfiguration::max_touch_move_in_pixels_for_click(); |
28 config.double_tap_slop = | 28 config.double_tap_slop = |
29 GestureConfiguration::max_distance_between_taps_for_double_tap(); | 29 GestureConfiguration::max_distance_between_taps_for_double_tap(); |
30 config.minimum_fling_velocity = | 30 config.minimum_fling_velocity = |
31 GestureConfiguration::min_scroll_velocity(); | 31 GestureConfiguration::min_scroll_velocity(); |
32 config.maximum_fling_velocity = GestureConfiguration::fling_velocity_cap(); | 32 config.maximum_fling_velocity = GestureConfiguration::fling_velocity_cap(); |
33 config.swipe_enabled = true; | 33 config.swipe_enabled = true; |
34 config.minimum_swipe_velocity = GestureConfiguration::min_swipe_speed(); | 34 config.minimum_swipe_velocity = GestureConfiguration::min_swipe_speed(); |
35 config.maximum_swipe_deviation_angle = | 35 config.maximum_swipe_deviation_angle = |
36 GestureConfiguration::max_swipe_deviation_angle(); | 36 GestureConfiguration::max_swipe_deviation_angle(); |
37 config.two_finger_tap_enabled = true; | 37 config.two_finger_tap_enabled = true; |
38 config.two_finger_tap_max_separation = | 38 config.two_finger_tap_max_separation = |
39 GestureConfiguration::max_distance_for_two_finger_tap_in_pixels(); | 39 GestureConfiguration::max_distance_for_two_finger_tap_in_pixels(); |
40 config.two_finger_tap_timeout = base::TimeDelta::FromMilliseconds( | 40 config.two_finger_tap_timeout = base::TimeDelta::FromMilliseconds( |
41 GestureConfiguration::max_touch_down_duration_in_seconds_for_click() * | 41 GestureConfiguration::max_touch_down_duration_for_click_in_ms()); |
42 1000.); | |
43 | 42 |
44 return config; | 43 return config; |
45 } | 44 } |
46 | 45 |
47 ScaleGestureDetector::Config DefaultScaleGestureDetectorConfig() { | 46 ScaleGestureDetector::Config DefaultScaleGestureDetectorConfig() { |
48 ScaleGestureDetector::Config config; | 47 ScaleGestureDetector::Config config; |
49 double min_pinch_update_distance = | |
50 CommandLine::ForCurrentProcess()->HasSwitch( | |
51 switches::kCompensateForUnstablePinchZoom) | |
52 ? GestureConfiguration::min_pinch_update_distance_in_pixels() | |
53 : 0; | |
54 | |
55 config.span_slop = | 48 config.span_slop = |
56 GestureConfiguration::max_touch_move_in_pixels_for_click() * 2; | 49 GestureConfiguration::max_touch_move_in_pixels_for_click() * 2; |
57 config.min_scaling_touch_major = GestureConfiguration::default_radius() * 2; | 50 config.min_scaling_touch_major = GestureConfiguration::default_radius() * 2; |
58 config.min_scaling_span = GestureConfiguration::min_scaling_span_in_pixels(); | 51 config.min_scaling_span = GestureConfiguration::min_scaling_span_in_pixels(); |
59 config.min_pinch_update_span_delta = min_pinch_update_distance; | 52 config.min_pinch_update_span_delta = |
| 53 CommandLine::ForCurrentProcess()->HasSwitch( |
| 54 switches::kCompensateForUnstablePinchZoom) ? |
| 55 GestureConfiguration::min_pinch_update_distance_in_pixels() : 0; |
60 return config; | 56 return config; |
61 } | 57 } |
62 | 58 |
63 } // namespace | 59 } // namespace |
64 | 60 |
65 GestureProvider::Config DefaultGestureProviderConfig() { | 61 GestureProvider::Config DefaultGestureProviderConfig() { |
66 GestureProvider::Config config; | 62 GestureProvider::Config config; |
67 gfx::Screen* screen = gfx::Screen::GetScreenByType(gfx::SCREEN_TYPE_NATIVE); | 63 gfx::Screen* screen = gfx::Screen::GetScreenByType(gfx::SCREEN_TYPE_NATIVE); |
68 // |screen| is sometimes NULL during tests. | 64 // |screen| is sometimes NULL during tests. |
69 if (screen) | 65 if (screen) |
70 config.display = screen->GetPrimaryDisplay(); | 66 config.display = screen->GetPrimaryDisplay(); |
71 config.gesture_detector_config = DefaultGestureDetectorConfig(); | 67 config.gesture_detector_config = DefaultGestureDetectorConfig(); |
72 config.scale_gesture_detector_config = DefaultScaleGestureDetectorConfig(); | 68 config.scale_gesture_detector_config = DefaultScaleGestureDetectorConfig(); |
73 config.gesture_begin_end_types_enabled = true; | 69 config.gesture_begin_end_types_enabled = true; |
74 // Half the size of the default touch length is a reasonable minimum. | 70 // Half the size of the default touch length is a reasonable minimum. |
75 config.min_gesture_bounds_length = GestureConfiguration::default_radius(); | 71 config.min_gesture_bounds_length = GestureConfiguration::default_radius(); |
76 return config; | 72 return config; |
77 } | 73 } |
78 | 74 |
79 } // namespace ui | 75 } // namespace ui |
OLD | NEW |