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

Side by Side Diff: ash/common/metrics/user_metrics_action.h

Issue 2063333002: mash: Move all ash UMA metrics to //ash/common/metrics (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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 | « ash/aura/wm_shell_aura.cc ('k') | ash/common/shelf/shelf_alignment_menu.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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 #ifndef ASH_METRICS_USER_METRICS_RECORDER_H_ 5 #ifndef ASH_COMMON_METRICS_USER_METRICS_ACTION_H_
6 #define ASH_METRICS_USER_METRICS_RECORDER_H_ 6 #define ASH_COMMON_METRICS_USER_METRICS_ACTION_H_
7
8 #include <memory>
9
10 #include "ash/ash_export.h"
11 #include "ash/metrics/task_switch_metrics_recorder.h"
12 #include "base/macros.h"
13 #include "base/timer/timer.h"
14 7
15 namespace ash { 8 namespace ash {
16 9
17 class DesktopTaskSwitchMetricRecorder; 10 // Ash-owned user metrics.
18
19 namespace test {
20 class UserMetricsRecorderTestAPI;
21 }
22
23 namespace wm {
24 enum class WmUserMetricsAction;
25 }
26
27 enum UserMetricsAction { 11 enum UserMetricsAction {
28 UMA_ACCEL_EXIT_FIRST_Q, 12 UMA_ACCEL_EXIT_FIRST_Q,
29 UMA_ACCEL_EXIT_SECOND_Q, 13 UMA_ACCEL_EXIT_SECOND_Q,
30 UMA_ACCEL_KEYBOARD_BRIGHTNESS_DOWN_F6, 14 UMA_ACCEL_KEYBOARD_BRIGHTNESS_DOWN_F6,
31 UMA_ACCEL_KEYBOARD_BRIGHTNESS_UP_F7, 15 UMA_ACCEL_KEYBOARD_BRIGHTNESS_UP_F7,
32 UMA_ACCEL_LOCK_SCREEN_LOCK_BUTTON, 16 UMA_ACCEL_LOCK_SCREEN_LOCK_BUTTON,
33 UMA_ACCEL_LOCK_SCREEN_POWER_BUTTON, 17 UMA_ACCEL_LOCK_SCREEN_POWER_BUTTON,
34 UMA_ACCEL_MAXIMIZE_RESTORE_F4, 18 UMA_ACCEL_MAXIMIZE_RESTORE_F4,
35 UMA_ACCEL_PREVWINDOW_F5, 19 UMA_ACCEL_PREVWINDOW_F5,
36 UMA_ACCEL_RESTART_POWER_BUTTON, 20 UMA_ACCEL_RESTART_POWER_BUTTON,
37 UMA_ACCEL_SHUT_DOWN_POWER_BUTTON, 21 UMA_ACCEL_SHUT_DOWN_POWER_BUTTON,
38 UMA_CLOSE_THROUGH_CONTEXT_MENU, 22 UMA_CLOSE_THROUGH_CONTEXT_MENU,
39 UMA_DESKTOP_SWITCH_TASK, 23 UMA_DESKTOP_SWITCH_TASK,
24 UMA_DRAG_MAXIMIZE_LEFT,
25 UMA_DRAG_MAXIMIZE_RIGHT,
40 UMA_LAUNCHER_BUTTON_PRESSED_WITH_MOUSE, 26 UMA_LAUNCHER_BUTTON_PRESSED_WITH_MOUSE,
41 UMA_LAUNCHER_BUTTON_PRESSED_WITH_TOUCH, 27 UMA_LAUNCHER_BUTTON_PRESSED_WITH_TOUCH,
42 UMA_LAUNCHER_CLICK_ON_APP, 28 UMA_LAUNCHER_CLICK_ON_APP,
43 UMA_LAUNCHER_CLICK_ON_APPLIST_BUTTON, 29 UMA_LAUNCHER_CLICK_ON_APPLIST_BUTTON,
44 UMA_LAUNCHER_LAUNCH_TASK, 30 UMA_LAUNCHER_LAUNCH_TASK,
45 UMA_LAUNCHER_MINIMIZE_TASK, 31 UMA_LAUNCHER_MINIMIZE_TASK,
46 UMA_LAUNCHER_SWITCH_TASK, 32 UMA_LAUNCHER_SWITCH_TASK,
47 UMA_MAXIMIZE_MODE_DISABLED, 33 UMA_MAXIMIZE_MODE_DISABLED,
48 UMA_MAXIMIZE_MODE_ENABLED, 34 UMA_MAXIMIZE_MODE_ENABLED,
49 UMA_MAXIMIZE_MODE_INITIALLY_DISABLED, 35 UMA_MAXIMIZE_MODE_INITIALLY_DISABLED,
50 UMA_MOUSE_DOWN, 36 UMA_MOUSE_DOWN,
51 UMA_PANEL_MINIMIZE_CAPTION_CLICK, 37 UMA_PANEL_MINIMIZE_CAPTION_CLICK,
52 UMA_PANEL_MINIMIZE_CAPTION_GESTURE, 38 UMA_PANEL_MINIMIZE_CAPTION_GESTURE,
39 UMA_SHELF_ALIGNMENT_SET_BOTTOM,
40 UMA_SHELF_ALIGNMENT_SET_LEFT,
41 UMA_SHELF_ALIGNMENT_SET_RIGHT,
53 UMA_STATUS_AREA_AUDIO_CURRENT_INPUT_DEVICE, 42 UMA_STATUS_AREA_AUDIO_CURRENT_INPUT_DEVICE,
54 UMA_STATUS_AREA_AUDIO_CURRENT_OUTPUT_DEVICE, 43 UMA_STATUS_AREA_AUDIO_CURRENT_OUTPUT_DEVICE,
55 UMA_STATUS_AREA_AUDIO_SWITCH_INPUT_DEVICE, 44 UMA_STATUS_AREA_AUDIO_SWITCH_INPUT_DEVICE,
56 UMA_STATUS_AREA_AUDIO_SWITCH_OUTPUT_DEVICE, 45 UMA_STATUS_AREA_AUDIO_SWITCH_OUTPUT_DEVICE,
57 UMA_STATUS_AREA_BRIGHTNESS_CHANGED, 46 UMA_STATUS_AREA_BRIGHTNESS_CHANGED,
58 UMA_STATUS_AREA_BLUETOOTH_CONNECT_KNOWN_DEVICE, 47 UMA_STATUS_AREA_BLUETOOTH_CONNECT_KNOWN_DEVICE,
59 UMA_STATUS_AREA_BLUETOOTH_CONNECT_UNKNOWN_DEVICE, 48 UMA_STATUS_AREA_BLUETOOTH_CONNECT_UNKNOWN_DEVICE,
60 UMA_STATUS_AREA_BLUETOOTH_DISABLED, 49 UMA_STATUS_AREA_BLUETOOTH_DISABLED,
61 UMA_STATUS_AREA_BLUETOOTH_ENABLED, 50 UMA_STATUS_AREA_BLUETOOTH_ENABLED,
62 UMA_STATUS_AREA_CAPS_LOCK_DETAILED, 51 UMA_STATUS_AREA_CAPS_LOCK_DETAILED,
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 UMA_STATUS_AREA_SIGN_OUT, 93 UMA_STATUS_AREA_SIGN_OUT,
105 UMA_STATUS_AREA_VPN_ADD_BUILT_IN_CLICKED, 94 UMA_STATUS_AREA_VPN_ADD_BUILT_IN_CLICKED,
106 UMA_STATUS_AREA_VPN_ADD_THIRD_PARTY_CLICKED, 95 UMA_STATUS_AREA_VPN_ADD_THIRD_PARTY_CLICKED,
107 UMA_STATUS_AREA_VPN_DISCONNECT_CLICKED, 96 UMA_STATUS_AREA_VPN_DISCONNECT_CLICKED,
108 UMA_STATUS_AREA_VPN_SETTINGS_CLICKED, 97 UMA_STATUS_AREA_VPN_SETTINGS_CLICKED,
109 UMA_TOGGLE_MAXIMIZE_CAPTION_CLICK, 98 UMA_TOGGLE_MAXIMIZE_CAPTION_CLICK,
110 UMA_TOGGLE_MAXIMIZE_CAPTION_GESTURE, 99 UMA_TOGGLE_MAXIMIZE_CAPTION_GESTURE,
111 UMA_TOGGLE_SINGLE_AXIS_MAXIMIZE_BORDER_CLICK, 100 UMA_TOGGLE_SINGLE_AXIS_MAXIMIZE_BORDER_CLICK,
112 UMA_TOUCHPAD_GESTURE_OVERVIEW, 101 UMA_TOUCHPAD_GESTURE_OVERVIEW,
113 UMA_TOUCHSCREEN_TAP_DOWN, 102 UMA_TOUCHSCREEN_TAP_DOWN,
103 UMA_TRAY_HELP,
104 UMA_TRAY_LOCK_SCREEN,
114 UMA_TRAY_OVERVIEW, 105 UMA_TRAY_OVERVIEW,
106 UMA_TRAY_SHUT_DOWN,
115 UMA_WINDOW_APP_CLOSE_BUTTON_CLICK, 107 UMA_WINDOW_APP_CLOSE_BUTTON_CLICK,
116 UMA_WINDOW_CLOSE_BUTTON_CLICK, 108 UMA_WINDOW_CLOSE_BUTTON_CLICK,
117 UMA_WINDOW_MAXIMIZE_BUTTON_CLICK_EXIT_FULLSCREEN, 109 UMA_WINDOW_MAXIMIZE_BUTTON_CLICK_EXIT_FULLSCREEN,
118 UMA_WINDOW_MAXIMIZE_BUTTON_CLICK_MAXIMIZE, 110 UMA_WINDOW_MAXIMIZE_BUTTON_CLICK_MAXIMIZE,
119 UMA_WINDOW_MAXIMIZE_BUTTON_CLICK_MINIMIZE, 111 UMA_WINDOW_MAXIMIZE_BUTTON_CLICK_MINIMIZE,
120 UMA_WINDOW_MAXIMIZE_BUTTON_CLICK_RESTORE, 112 UMA_WINDOW_MAXIMIZE_BUTTON_CLICK_RESTORE,
121 UMA_WINDOW_MAXIMIZE_BUTTON_MAXIMIZE_LEFT, 113 UMA_WINDOW_MAXIMIZE_BUTTON_MAXIMIZE_LEFT,
122 UMA_WINDOW_MAXIMIZE_BUTTON_MAXIMIZE_RIGHT, 114 UMA_WINDOW_MAXIMIZE_BUTTON_MAXIMIZE_RIGHT,
123 115
124 // Window selection started by beginning an alt+tab cycle. This does not count 116 // Window selection started by beginning an alt+tab cycle. This does not count
125 // each step through an alt+tab cycle. 117 // each step through an alt+tab cycle.
126 UMA_WINDOW_CYCLE, 118 UMA_WINDOW_CYCLE,
127 };
128 119
129 // User Metrics Recorder provides a repeating callback (RecordPeriodicMetrics) 120 // Thumbnail sized overview of windows triggered by pressing the overview key.
130 // on a timer to allow recording of state data over time to the UMA records. 121 UMA_WINDOW_OVERVIEW,
131 // Any additional states (in ash) that require monitoring can be added to
132 // this class. As well calls to record on action metrics
133 // (RecordUserMetricsAction) are passed through the UserMetricsRecorder.
134 class ASH_EXPORT UserMetricsRecorder {
135 public:
136 // Creates a UserMetricsRecorder that records metrics periodically. Equivalent
137 // to calling UserMetricsRecorder(true).
138 UserMetricsRecorder();
139 122
140 virtual ~UserMetricsRecorder(); 123 // User selected a window in overview mode different from the
124 // previously-active window.
125 UMA_WINDOW_OVERVIEW_ACTIVE_WINDOW_CHANGED,
141 126
142 // Records an Ash owned user action. 127 // Selecting a window in overview mode by pressing the enter key.
143 void RecordUserMetricsAction(ash::UserMetricsAction action); 128 UMA_WINDOW_OVERVIEW_ENTER_KEY,
144 void RecordUserMetricsAction(wm::WmUserMetricsAction action);
145
146 TaskSwitchMetricsRecorder& task_switch_metrics_recorder() {
147 return task_switch_metrics_recorder_;
148 }
149
150 // Informs |this| that the Shell has been initialized.
151 void OnShellInitialized();
152
153 // Informs |this| that the Shell is going to be shut down.
154 void OnShellShuttingDown();
155
156 private:
157 friend class test::UserMetricsRecorderTestAPI;
158
159 // Creates a UserMetricsRecorder and will only record periodic metrics if
160 // |record_periodic_metrics| is true. This is used by tests that do not want
161 // the timer to be started.
162 // TODO(bruthig): Add a constructor that accepts a base::RepeatingTimer so
163 // that tests can inject a test double that can be controlled by the test. The
164 // missing piece is a suitable base::RepeatingTimer test double.
165 explicit UserMetricsRecorder(bool record_periodic_metrics);
166
167 // Records UMA metrics. Invoked periodically by the |timer_|.
168 void RecordPeriodicMetrics();
169
170 // Returns true if the user's session is active and they are in a desktop
171 // environment.
172 bool IsUserInActiveDesktopEnvironment() const;
173
174 // Starts the |timer_| and binds it to |RecordPeriodicMetrics|.
175 void StartTimer();
176
177 // The periodic timer that triggers metrics to be recorded.
178 base::RepeatingTimer timer_;
179
180 TaskSwitchMetricsRecorder task_switch_metrics_recorder_;
181
182 // Metric recorder to track how often task windows are activated by mouse
183 // clicks or touchscreen taps.
184 std::unique_ptr<DesktopTaskSwitchMetricRecorder>
185 desktop_task_switch_metric_recorder_;
186
187 DISALLOW_COPY_AND_ASSIGN(UserMetricsRecorder);
188 }; 129 };
189 130
190 } // namespace ash 131 } // namespace ash
191 132
192 #endif // ASH_METRICS_USER_METRICS_RECORDER_H_ 133 #endif // ASH_COMMON_METRICS_USER_METRICS_ACTION_H_
OLDNEW
« no previous file with comments | « ash/aura/wm_shell_aura.cc ('k') | ash/common/shelf/shelf_alignment_menu.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698