diff options
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.cc | 73 |
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 |