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

Side by Side Diff: ui/events/gesture_detection/gesture_touch_uma_histogram.cc

Issue 501553004: Move gesture/touch UMA logs into gesture provider (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: format Created 6 years, 3 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
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "ui/events/gesture_detection/gesture_touch_uma_histogram.h"
6
7 #include "base/logging.h"
8 #include "base/metrics/histogram.h"
9
10 namespace ui {
11
12 GestureTouchUMAHistogram::GestureTouchUMAHistogram() {
13 }
14
15 GestureTouchUMAHistogram::~GestureTouchUMAHistogram() {
16 }
17
18 GestureTouchUMAHistogram::WindowTouchDetails::WindowTouchDetails()
19 : max_distance_from_start_squared_(0), is_single_finger_(false) {
20 }
21
22 GestureTouchUMAHistogram::WindowTouchDetails::WindowTouchDetails(
23 const base::TimeTicks& start_time,
24 const gfx::Point& start_touch_position)
25 : start_time_(start_time),
26 start_touch_position_(start_touch_position),
27 max_distance_from_start_squared_(0),
28 is_single_finger_(true) {
29 }
30
31 GestureTouchUMAHistogram::WindowTouchDetails::~WindowTouchDetails() {
32 }
33
34 void GestureTouchUMAHistogram::RecordGestureEvent(
35 const GestureEventData& gesture) {
36 UMA_HISTOGRAM_ENUMERATION(
37 "Event.GestureCreated", UMAEventTypeFromEvent(gesture), UMA_ET_COUNT);
38 }
39
40 void GestureTouchUMAHistogram::RecordTouchEvent(const MotionEvent& event) {
41 EventType eventType = TouchEventTypeFromMotionEvent(event);
tdresser 2014/08/27 12:35:39 Just use GetAction() from the MotionEvent directly
lanwei 2014/08/27 23:32:00 Done.
42 if (eventType == ET_TOUCH_PRESSED) {
43 details.reset(new WindowTouchDetails(
44 event.GetEventTime(), gfx::Point(event.GetX(), event.GetY())));
45 } else if (eventType == ET_TOUCH_MOVED && details->is_single_finger_) {
46 float cur_dist = (details->start_touch_position_ -
47 gfx::Point(event.GetX(), event.GetY())).LengthSquared();
48 if (cur_dist > details->max_distance_from_start_squared_)
49 details->max_distance_from_start_squared_ = cur_dist;
50 } else {
51 if (eventType == ET_TOUCH_RELEASED && event.GetPointerCount() == 1 &&
52 details->is_single_finger_) {
53 UMA_HISTOGRAM_CUSTOM_COUNTS(
54 "Event.TouchMaxDistance",
tdresser 2014/08/27 12:35:39 You'll need to modify histograms.xml to deprecate
lanwei 2014/08/27 23:31:59 Done.
55 static_cast<int>(sqrt(details->max_distance_from_start_squared_)),
56 0,
57 1500,
58 50);
59
60 base::TimeDelta duration = event.GetEventTime() - details->start_time_;
61 UMA_HISTOGRAM_TIMES("Event.TouchDuration2", duration);
62 }
63 details.reset(new WindowTouchDetails());
64 }
65 }
66
67 EventType GestureTouchUMAHistogram::TouchEventTypeFromMotionEvent(
tdresser 2014/08/27 12:35:39 This is unnecessary.
lanwei 2014/08/27 23:31:59 Done.
68 const MotionEvent& event) {
69 switch (event.GetAction()) {
70 case MotionEvent::ACTION_DOWN:
71 return ET_TOUCH_PRESSED;
72 case MotionEvent::ACTION_UP:
73 return ET_TOUCH_RELEASED;
74 case MotionEvent::ACTION_MOVE:
75 return ET_TOUCH_MOVED;
76 case MotionEvent::ACTION_CANCEL:
77 return ET_TOUCH_CANCELLED;
78 default:
79 return ET_UNKNOWN;
80 }
81 }
82
83 UMAEventType GestureTouchUMAHistogram::UMAEventTypeFromEvent(
84 const GestureEventData& gesture) {
85 switch (gesture.type()) {
86 case ET_TOUCH_RELEASED:
87 return UMA_ET_TOUCH_RELEASED;
88 case ET_TOUCH_PRESSED:
89 return UMA_ET_TOUCH_PRESSED;
90 case ET_TOUCH_MOVED:
91 return UMA_ET_TOUCH_MOVED;
92 case ET_TOUCH_CANCELLED:
93 return UMA_ET_TOUCH_CANCELLED;
94 case ET_GESTURE_SCROLL_BEGIN:
95 return UMA_ET_GESTURE_SCROLL_BEGIN;
96 case ET_GESTURE_SCROLL_END:
97 return UMA_ET_GESTURE_SCROLL_END;
98 case ET_GESTURE_SCROLL_UPDATE: {
99 int touch_points = gesture.details.touch_points();
100 if (touch_points == 1)
101 return UMA_ET_GESTURE_SCROLL_UPDATE;
102 else if (touch_points == 2)
103 return UMA_ET_GESTURE_SCROLL_UPDATE_2;
104 else if (touch_points == 3)
105 return UMA_ET_GESTURE_SCROLL_UPDATE_3;
106 return UMA_ET_GESTURE_SCROLL_UPDATE_4P;
107 }
108 case ET_GESTURE_TAP: {
109 int tap_count = gesture.details.tap_count();
110 if (tap_count == 1)
111 return UMA_ET_GESTURE_TAP;
112 if (tap_count == 2)
113 return UMA_ET_GESTURE_DOUBLE_TAP;
114 if (tap_count == 3)
115 return UMA_ET_GESTURE_TRIPLE_TAP;
116 NOTREACHED() << "Received tap with tapcount " << tap_count;
117 return UMA_ET_UNKNOWN;
118 }
119 case ET_GESTURE_TAP_DOWN:
120 return UMA_ET_GESTURE_TAP_DOWN;
121 case ET_GESTURE_BEGIN:
122 return UMA_ET_GESTURE_BEGIN;
123 case ET_GESTURE_END:
124 return UMA_ET_GESTURE_END;
125 case ET_GESTURE_TWO_FINGER_TAP:
126 return UMA_ET_GESTURE_TWO_FINGER_TAP;
127 case ET_GESTURE_PINCH_BEGIN:
128 return UMA_ET_GESTURE_PINCH_BEGIN;
129 case ET_GESTURE_PINCH_END:
130 return UMA_ET_GESTURE_PINCH_END;
131 case ET_GESTURE_PINCH_UPDATE: {
132 int touch_points = gesture.details.touch_points();
133 if (touch_points >= 4)
134 return UMA_ET_GESTURE_PINCH_UPDATE_4P;
135 else if (touch_points == 3)
136 return UMA_ET_GESTURE_PINCH_UPDATE_3;
137 return UMA_ET_GESTURE_PINCH_UPDATE;
138 }
139 case ET_GESTURE_LONG_PRESS:
140 return UMA_ET_GESTURE_LONG_PRESS;
141 case ET_GESTURE_LONG_TAP:
142 return UMA_ET_GESTURE_LONG_TAP;
143 case ET_GESTURE_SWIPE: {
144 int touch_points = gesture.details.touch_points();
145 if (touch_points == 1)
146 return UMA_ET_GESTURE_SWIPE_1;
147 else if (touch_points == 2)
148 return UMA_ET_GESTURE_SWIPE_2;
149 else if (touch_points == 3)
150 return UMA_ET_GESTURE_SWIPE_3;
151 return UMA_ET_GESTURE_SWIPE_4P;
152 }
153 case ET_GESTURE_WIN8_EDGE_SWIPE:
154 return UMA_ET_GESTURE_WIN8_EDGE_SWIPE;
155 case ET_GESTURE_TAP_CANCEL:
156 return UMA_ET_GESTURE_TAP_CANCEL;
157 case ET_GESTURE_SHOW_PRESS:
158 return UMA_ET_GESTURE_SHOW_PRESS;
159 case ET_SCROLL:
160 return UMA_ET_SCROLL;
161 case ET_SCROLL_FLING_START:
162 return UMA_ET_SCROLL_FLING_START;
163 case ET_SCROLL_FLING_CANCEL:
164 return UMA_ET_SCROLL_FLING_CANCEL;
165 case ET_GESTURE_TAP_UNCONFIRMED:
166 return UMA_ET_GESTURE_TAP_UNCONFIRMED;
167 case ET_GESTURE_DOUBLE_TAP:
168 return UMA_ET_GESTURE_DOUBLE_TAP;
169 default:
170 NOTREACHED();
171 return UMA_ET_UNKNOWN;
172 }
173 }
174
175 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698