summaryrefslogtreecommitdiffstats
path: root/chromium/ui/events/gesture_detection/gesture_config_helper_android.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ui/events/gesture_detection/gesture_config_helper_android.cc')
-rw-r--r--chromium/ui/events/gesture_detection/gesture_config_helper_android.cc73
1 files changed, 73 insertions, 0 deletions
diff --git a/chromium/ui/events/gesture_detection/gesture_config_helper_android.cc b/chromium/ui/events/gesture_detection/gesture_config_helper_android.cc
new file mode 100644
index 00000000000..546cb84e119
--- /dev/null
+++ b/chromium/ui/events/gesture_detection/gesture_config_helper_android.cc
@@ -0,0 +1,73 @@
+// Copyright 2014 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/events/gesture_detection/gesture_config_helper.h"
+
+#include "ui/gfx/android/view_configuration.h"
+#include "ui/gfx/screen.h"
+
+using gfx::ViewConfiguration;
+
+namespace ui {
+namespace {
+// TODO(jdduke): Adopt GestureConfiguration on Android, crbug/339203.
+
+// This was the minimum tap/press size used on Android before the new gesture
+// detection pipeline.
+const float kMinGestureBoundsLengthDips = 24.f;
+
+GestureDetector::Config DefaultGestureDetectorConfig(
+ const gfx::Display& display) {
+ GestureDetector::Config config;
+
+ config.longpress_timeout = base::TimeDelta::FromMilliseconds(
+ ViewConfiguration::GetLongPressTimeoutInMs());
+ config.showpress_timeout =
+ base::TimeDelta::FromMilliseconds(ViewConfiguration::GetTapTimeoutInMs());
+ config.double_tap_timeout = base::TimeDelta::FromMilliseconds(
+ ViewConfiguration::GetDoubleTapTimeoutInMs());
+
+ const float px_to_dp = 1.f / display.device_scale_factor();
+ config.touch_slop =
+ ViewConfiguration::GetTouchSlopInPixels() * px_to_dp;
+ config.double_tap_slop =
+ ViewConfiguration::GetDoubleTapSlopInPixels() * px_to_dp;
+ config.minimum_fling_velocity =
+ ViewConfiguration::GetMinimumFlingVelocityInPixelsPerSecond() * px_to_dp;
+ config.maximum_fling_velocity =
+ ViewConfiguration::GetMaximumFlingVelocityInPixelsPerSecond() * px_to_dp;
+
+ return config;
+}
+
+ScaleGestureDetector::Config DefaultScaleGestureDetectorConfig(
+ const gfx::Display& display) {
+ ScaleGestureDetector::Config config;
+
+ config.gesture_detector_config = DefaultGestureDetectorConfig(display);
+ config.quick_scale_enabled = true;
+
+ const float px_to_dp = 1.f / display.device_scale_factor();
+ config.min_scaling_touch_major =
+ ViewConfiguration::GetMinScalingTouchMajorInPixels() * px_to_dp;
+ config.min_scaling_span =
+ ViewConfiguration::GetMinScalingSpanInPixels() * px_to_dp;
+
+ return config;
+}
+
+} // namespace
+
+GestureProvider::Config DefaultGestureProviderConfig() {
+ GestureProvider::Config config;
+ config.display = gfx::Screen::GetNativeScreen()->GetPrimaryDisplay();
+ config.gesture_detector_config = DefaultGestureDetectorConfig(config.display);
+ config.scale_gesture_detector_config =
+ DefaultScaleGestureDetectorConfig(config.display);
+ config.gesture_begin_end_types_enabled = false;
+ config.min_gesture_bounds_length = kMinGestureBoundsLengthDips;
+ return config;
+}
+
+} // namespace ui