summaryrefslogtreecommitdiffstats
path: root/ui/events/gesture_detection/gesture_config_helper_android.cc
blob: e37650a509188a60ffb9ef1bc3f6c156c1d44257 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// 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.

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;
  return config;
}

}  // namespace ui