Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(339)

Side by Side Diff: ash/touch/touch_uma.cc

Issue 302463004: Implementing the dispatch of the swipe gesture for one-finger touch swipes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Implementing review feedback. Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | ash/wm/gestures/overview_gesture_handler.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "ash/touch/touch_uma.h" 5 #include "ash/touch/touch_uma.h"
6 6
7 #include "ash/metrics/user_metrics_recorder.h" 7 #include "ash/metrics/user_metrics_recorder.h"
8 #include "ash/shell.h" 8 #include "ash/shell.h"
9 #include "base/metrics/histogram.h" 9 #include "base/metrics/histogram.h"
10 #include "base/strings/stringprintf.h" 10 #include "base/strings/stringprintf.h"
11 #include "ui/aura/env.h" 11 #include "ui/aura/env.h"
12 #include "ui/aura/window.h" 12 #include "ui/aura/window.h"
13 #include "ui/aura/window_event_dispatcher.h" 13 #include "ui/aura/window_event_dispatcher.h"
14 #include "ui/aura/window_property.h" 14 #include "ui/aura/window_property.h"
15 #include "ui/events/event.h" 15 #include "ui/events/event.h"
16 #include "ui/events/event_utils.h" 16 #include "ui/events/event_utils.h"
17 #include "ui/gfx/point_conversions.h" 17 #include "ui/gfx/point_conversions.h"
18 18
19 #if defined(USE_XI2_MT) 19 #if defined(USE_XI2_MT)
20 #include <X11/extensions/XInput2.h> 20 #include <X11/extensions/XInput2.h>
21 #include <X11/Xlib.h> 21 #include <X11/Xlib.h>
22 #endif 22 #endif
23 23
24 namespace { 24 namespace {
25 25
26 enum UMAEventType { 26 enum UMAEventType {
27 UMA_ET_UNKNOWN, 27 // WARNING: Do not change the numerical values of any of these types.
28 UMA_ET_TOUCH_RELEASED, 28 // Do not remove deprecated types - just comment them as deprecated.
29 UMA_ET_TOUCH_PRESSED, 29 UMA_ET_UNKNOWN = 0,
30 UMA_ET_TOUCH_MOVED, 30 UMA_ET_TOUCH_RELEASED = 1,
31 UMA_ET_TOUCH_STATIONARY, // Deprecated. Do not remove. 31 UMA_ET_TOUCH_PRESSED = 2,
32 UMA_ET_TOUCH_CANCELLED, 32 UMA_ET_TOUCH_MOVED = 3,
33 UMA_ET_GESTURE_SCROLL_BEGIN, 33 UMA_ET_TOUCH_STATIONARY = 4, // Deprecated. Do not remove.
34 UMA_ET_GESTURE_SCROLL_END, 34 UMA_ET_TOUCH_CANCELLED = 5,
35 UMA_ET_GESTURE_SCROLL_UPDATE, 35 UMA_ET_GESTURE_SCROLL_BEGIN = 6,
36 UMA_ET_GESTURE_TAP, 36 UMA_ET_GESTURE_SCROLL_END = 7,
37 UMA_ET_GESTURE_TAP_DOWN, 37 UMA_ET_GESTURE_SCROLL_UPDATE = 8,
38 UMA_ET_GESTURE_BEGIN, 38 UMA_ET_GESTURE_TAP = 9,
39 UMA_ET_GESTURE_END, 39 UMA_ET_GESTURE_TAP_DOWN = 10,
40 UMA_ET_GESTURE_DOUBLE_TAP, 40 UMA_ET_GESTURE_BEGIN = 11,
41 UMA_ET_GESTURE_TRIPLE_TAP, 41 UMA_ET_GESTURE_END = 12,
42 UMA_ET_GESTURE_TWO_FINGER_TAP, 42 UMA_ET_GESTURE_DOUBLE_TAP = 13,
43 UMA_ET_GESTURE_PINCH_BEGIN, 43 UMA_ET_GESTURE_TRIPLE_TAP = 14,
44 UMA_ET_GESTURE_PINCH_END, 44 UMA_ET_GESTURE_TWO_FINGER_TAP = 15,
45 UMA_ET_GESTURE_PINCH_UPDATE, 45 UMA_ET_GESTURE_PINCH_BEGIN = 16,
46 UMA_ET_GESTURE_LONG_PRESS, 46 UMA_ET_GESTURE_PINCH_END = 17,
47 UMA_ET_GESTURE_MULTIFINGER_SWIPE, 47 UMA_ET_GESTURE_PINCH_UPDATE = 18,
48 UMA_ET_SCROLL, 48 UMA_ET_GESTURE_LONG_PRESS = 19,
49 UMA_ET_SCROLL_FLING_START, 49 UMA_ET_GESTURE_SWIPE_2 = 20, // Swipe with 2 fingers
50 UMA_ET_SCROLL_FLING_CANCEL, 50 UMA_ET_SCROLL = 21,
51 UMA_ET_GESTURE_MULTIFINGER_SWIPE_3, 51 UMA_ET_SCROLL_FLING_START = 22,
52 UMA_ET_GESTURE_MULTIFINGER_SWIPE_4P, // 4+ fingers 52 UMA_ET_SCROLL_FLING_CANCEL = 23,
53 UMA_ET_GESTURE_SCROLL_UPDATE_2, 53 UMA_ET_GESTURE_SWIPE_3 = 24, // Swipe with 3 fingers
54 UMA_ET_GESTURE_SCROLL_UPDATE_3, 54 UMA_ET_GESTURE_SWIPE_4P = 25, // Swipe with 4+ fingers
55 UMA_ET_GESTURE_SCROLL_UPDATE_4P, 55 UMA_ET_GESTURE_SCROLL_UPDATE_2 = 26,
56 UMA_ET_GESTURE_PINCH_UPDATE_3, 56 UMA_ET_GESTURE_SCROLL_UPDATE_3 = 27,
57 UMA_ET_GESTURE_PINCH_UPDATE_4P, 57 UMA_ET_GESTURE_SCROLL_UPDATE_4P = 28,
58 UMA_ET_GESTURE_LONG_TAP, 58 UMA_ET_GESTURE_PINCH_UPDATE_3 = 29,
59 UMA_ET_GESTURE_SHOW_PRESS, 59 UMA_ET_GESTURE_PINCH_UPDATE_4P = 30,
60 UMA_ET_GESTURE_TAP_CANCEL, 60 UMA_ET_GESTURE_LONG_TAP = 31,
61 UMA_ET_GESTURE_WIN8_EDGE_SWIPE, 61 UMA_ET_GESTURE_SHOW_PRESS = 32,
62 UMA_ET_GESTURE_TAP_CANCEL = 33,
63 UMA_ET_GESTURE_WIN8_EDGE_SWIPE = 34,
64 UMA_ET_GESTURE_SWIPE_1 = 35, // Swipe with 1 finger
62 // NOTE: Add new event types only immediately above this line. Make sure to 65 // NOTE: Add new event types only immediately above this line. Make sure to
63 // update the UIEventType enum in tools/metrics/histograms/histograms.xml 66 // update the UIEventType enum in tools/metrics/histograms/histograms.xml
64 // accordingly. 67 // accordingly.
65 UMA_ET_COUNT 68 UMA_ET_COUNT
66 }; 69 };
67 70
68 struct WindowTouchDetails { 71 struct WindowTouchDetails {
69 WindowTouchDetails() 72 WindowTouchDetails()
70 : max_distance_from_start_squared_(0) { 73 : max_distance_from_start_squared_(0) {
71 } 74 }
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 return UMA_ET_TOUCH_MOVED; 109 return UMA_ET_TOUCH_MOVED;
107 case ui::ET_TOUCH_CANCELLED: 110 case ui::ET_TOUCH_CANCELLED:
108 return UMA_ET_TOUCH_CANCELLED; 111 return UMA_ET_TOUCH_CANCELLED;
109 case ui::ET_GESTURE_SCROLL_BEGIN: 112 case ui::ET_GESTURE_SCROLL_BEGIN:
110 return UMA_ET_GESTURE_SCROLL_BEGIN; 113 return UMA_ET_GESTURE_SCROLL_BEGIN;
111 case ui::ET_GESTURE_SCROLL_END: 114 case ui::ET_GESTURE_SCROLL_END:
112 return UMA_ET_GESTURE_SCROLL_END; 115 return UMA_ET_GESTURE_SCROLL_END;
113 case ui::ET_GESTURE_SCROLL_UPDATE: { 116 case ui::ET_GESTURE_SCROLL_UPDATE: {
114 const ui::GestureEvent& gesture = 117 const ui::GestureEvent& gesture =
115 static_cast<const ui::GestureEvent&>(event); 118 static_cast<const ui::GestureEvent&>(event);
116 if (gesture.details().touch_points() >= 4) 119 if (gesture.details().touch_points() == 1)
117 return UMA_ET_GESTURE_SCROLL_UPDATE_4P; 120 return UMA_ET_GESTURE_SCROLL_UPDATE;
121 else if (gesture.details().touch_points() == 2)
122 return UMA_ET_GESTURE_SCROLL_UPDATE_2;
118 else if (gesture.details().touch_points() == 3) 123 else if (gesture.details().touch_points() == 3)
119 return UMA_ET_GESTURE_SCROLL_UPDATE_3; 124 return UMA_ET_GESTURE_SCROLL_UPDATE_3;
120 else if (gesture.details().touch_points() == 2) 125 return UMA_ET_GESTURE_SCROLL_UPDATE_4P;
121 return UMA_ET_GESTURE_SCROLL_UPDATE_2;
122 return UMA_ET_GESTURE_SCROLL_UPDATE;
123 } 126 }
124 case ui::ET_GESTURE_TAP: { 127 case ui::ET_GESTURE_TAP: {
125 const ui::GestureEvent& gesture = 128 const ui::GestureEvent& gesture =
126 static_cast<const ui::GestureEvent&>(event); 129 static_cast<const ui::GestureEvent&>(event);
127 int tap_count = gesture.details().tap_count(); 130 int tap_count = gesture.details().tap_count();
128 if (tap_count == 1) 131 if (tap_count == 1)
129 return UMA_ET_GESTURE_TAP; 132 return UMA_ET_GESTURE_TAP;
130 if (tap_count == 2) 133 if (tap_count == 2)
131 return UMA_ET_GESTURE_DOUBLE_TAP; 134 return UMA_ET_GESTURE_DOUBLE_TAP;
132 if (tap_count == 3) 135 if (tap_count == 3)
(...skipping 19 matching lines...) Expand all
152 if (gesture.details().touch_points() >= 4) 155 if (gesture.details().touch_points() >= 4)
153 return UMA_ET_GESTURE_PINCH_UPDATE_4P; 156 return UMA_ET_GESTURE_PINCH_UPDATE_4P;
154 else if (gesture.details().touch_points() == 3) 157 else if (gesture.details().touch_points() == 3)
155 return UMA_ET_GESTURE_PINCH_UPDATE_3; 158 return UMA_ET_GESTURE_PINCH_UPDATE_3;
156 return UMA_ET_GESTURE_PINCH_UPDATE; 159 return UMA_ET_GESTURE_PINCH_UPDATE;
157 } 160 }
158 case ui::ET_GESTURE_LONG_PRESS: 161 case ui::ET_GESTURE_LONG_PRESS:
159 return UMA_ET_GESTURE_LONG_PRESS; 162 return UMA_ET_GESTURE_LONG_PRESS;
160 case ui::ET_GESTURE_LONG_TAP: 163 case ui::ET_GESTURE_LONG_TAP:
161 return UMA_ET_GESTURE_LONG_TAP; 164 return UMA_ET_GESTURE_LONG_TAP;
162 case ui::ET_GESTURE_MULTIFINGER_SWIPE: { 165 case ui::ET_GESTURE_SWIPE: {
163 const ui::GestureEvent& gesture = 166 const ui::GestureEvent& gesture =
164 static_cast<const ui::GestureEvent&>(event); 167 static_cast<const ui::GestureEvent&>(event);
165 if (gesture.details().touch_points() >= 4) 168 if (gesture.details().touch_points() == 1)
166 return UMA_ET_GESTURE_MULTIFINGER_SWIPE_4P; 169 return UMA_ET_GESTURE_SWIPE_1;
170 else if (gesture.details().touch_points() == 2)
171 return UMA_ET_GESTURE_SWIPE_2;
167 else if (gesture.details().touch_points() == 3) 172 else if (gesture.details().touch_points() == 3)
168 return UMA_ET_GESTURE_MULTIFINGER_SWIPE_3; 173 return UMA_ET_GESTURE_SWIPE_3;
169 return UMA_ET_GESTURE_MULTIFINGER_SWIPE; 174 return UMA_ET_GESTURE_SWIPE_4P;
170 } 175 }
171 case ui::ET_GESTURE_WIN8_EDGE_SWIPE: 176 case ui::ET_GESTURE_WIN8_EDGE_SWIPE:
172 return UMA_ET_GESTURE_WIN8_EDGE_SWIPE; 177 return UMA_ET_GESTURE_WIN8_EDGE_SWIPE;
173 case ui::ET_GESTURE_TAP_CANCEL: 178 case ui::ET_GESTURE_TAP_CANCEL:
174 return UMA_ET_GESTURE_TAP_CANCEL; 179 return UMA_ET_GESTURE_TAP_CANCEL;
175 case ui::ET_GESTURE_SHOW_PRESS: 180 case ui::ET_GESTURE_SHOW_PRESS:
176 return UMA_ET_GESTURE_SHOW_PRESS; 181 return UMA_ET_GESTURE_SHOW_PRESS;
177 case ui::ET_SCROLL: 182 case ui::ET_SCROLL:
178 return UMA_ET_SCROLL; 183 return UMA_ET_SCROLL;
179 case ui::ET_SCROLL_FLING_START: 184 case ui::ET_SCROLL_FLING_START:
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
463 return GESTURE_OMNIBOX_SCROLL; 468 return GESTURE_OMNIBOX_SCROLL;
464 if (event.type() == ui::ET_GESTURE_PINCH_BEGIN) 469 if (event.type() == ui::ET_GESTURE_PINCH_BEGIN)
465 return GESTURE_OMNIBOX_PINCH; 470 return GESTURE_OMNIBOX_PINCH;
466 return GESTURE_UNKNOWN; 471 return GESTURE_UNKNOWN;
467 } 472 }
468 473
469 return GESTURE_UNKNOWN; 474 return GESTURE_UNKNOWN;
470 } 475 }
471 476
472 } // namespace ash 477 } // namespace ash
OLDNEW
« no previous file with comments | « no previous file | ash/wm/gestures/overview_gesture_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698