Blink roll 174125:174137
[chromium-blink-merge.git] / ash / metrics / user_metrics_recorder.h
blob98eb6524bcce5d78fcb7d15de34fdebf8b4b9ae6
1 // Copyright 2013 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.
5 #ifndef ASH_USER_METRICS_RECORDER_H_
6 #define ASH_USER_METRICS_RECORDER_H_
8 #include "ash/ash_export.h"
9 #include "base/timer/timer.h"
11 namespace ash {
13 enum UserMetricsAction {
14 UMA_ACCEL_KEYBOARD_BRIGHTNESS_DOWN_F6,
15 UMA_ACCEL_KEYBOARD_BRIGHTNESS_UP_F7,
16 UMA_ACCEL_LOCK_SCREEN_LOCK_BUTTON,
17 UMA_ACCEL_LOCK_SCREEN_POWER_BUTTON,
18 UMA_ACCEL_MAXIMIZE_RESTORE_F4,
19 UMA_ACCEL_PREVWINDOW_F5,
20 UMA_ACCEL_EXIT_FIRST_Q,
21 UMA_ACCEL_EXIT_SECOND_Q,
22 UMA_ACCEL_SHUT_DOWN_POWER_BUTTON,
23 UMA_CLOSE_THROUGH_CONTEXT_MENU,
24 UMA_DRAG_MAXIMIZE_LEFT,
25 UMA_DRAG_MAXIMIZE_RIGHT,
26 UMA_GESTURE_OVERVIEW,
27 UMA_LAUNCHER_CLICK_ON_APP,
28 UMA_LAUNCHER_CLICK_ON_APPLIST_BUTTON,
29 UMA_MOUSE_DOWN,
30 UMA_PANEL_MINIMIZE_CAPTION_CLICK,
31 UMA_PANEL_MINIMIZE_CAPTION_GESTURE,
32 UMA_SHELF_ALIGNMENT_SET_BOTTOM,
33 UMA_SHELF_ALIGNMENT_SET_LEFT,
34 UMA_SHELF_ALIGNMENT_SET_RIGHT,
35 UMA_STATUS_AREA_AUDIO_CURRENT_INPUT_DEVICE,
36 UMA_STATUS_AREA_AUDIO_CURRENT_OUTPUT_DEVICE,
37 UMA_STATUS_AREA_AUDIO_SWITCH_INPUT_DEVICE,
38 UMA_STATUS_AREA_AUDIO_SWITCH_OUTPUT_DEVICE,
39 UMA_STATUS_AREA_BRIGHTNESS_CHANGED,
40 UMA_STATUS_AREA_BLUETOOTH_CONNECT_KNOWN_DEVICE,
41 UMA_STATUS_AREA_BLUETOOTH_CONNECT_UNKNOWN_DEVICE,
42 UMA_STATUS_AREA_BLUETOOTH_DISABLED,
43 UMA_STATUS_AREA_BLUETOOTH_ENABLED,
44 UMA_STATUS_AREA_CAPS_LOCK_DETAILED,
45 UMA_STATUS_AREA_CAPS_LOCK_DISABLED_BY_CLICK,
46 UMA_STATUS_AREA_CAPS_LOCK_ENABLED_BY_CLICK,
47 UMA_STATUS_AREA_CAPS_LOCK_POPUP,
48 UMA_STATUS_AREA_CONNECT_TO_CONFIGURED_NETWORK,
49 UMA_STATUS_AREA_CONNECT_TO_UNCONFIGURED_NETWORK,
50 UMA_STATUS_AREA_CONNECT_TO_VPN,
51 UMA_STATUS_AREA_CHANGED_VOLUME_MENU,
52 UMA_STATUS_AREA_CHANGED_VOLUME_POPUP,
53 UMA_STATUS_AREA_DETAILED_ACCESSABILITY,
54 UMA_STATUS_AREA_DETAILED_AUDIO_VIEW,
55 UMA_STATUS_AREA_DETAILED_BLUETOOTH_VIEW,
56 UMA_STATUS_AREA_DETAILED_BRIGHTNESS_VIEW,
57 UMA_STATUS_AREA_DETAILED_DRIVE_VIEW,
58 UMA_STATUS_AREA_DETAILED_NETWORK_VIEW,
59 UMA_STATUS_AREA_DETAILED_VPN_VIEW,
60 UMA_STATUS_AREA_DISABLE_AUTO_CLICK,
61 UMA_STATUS_AREA_DISABLE_HIGH_CONTRAST,
62 UMA_STATUS_AREA_DISABLE_LARGE_CURSOR,
63 UMA_STATUS_AREA_DISABLE_MAGNIFIER,
64 UMA_STATUS_AREA_DISABLE_SPOKEN_FEEDBACK,
65 UMA_STATUS_AREA_DISABLE_WIFI,
66 UMA_STATUS_AREA_DISABLE_VIRTUAL_KEYBOARD,
67 UMA_STATUS_AREA_DRIVE_CANCEL_OPERATION,
68 UMA_STATUS_AREA_DRIVE_SETTINGS,
69 UMA_STATUS_AREA_ENABLE_AUTO_CLICK,
70 UMA_STATUS_AREA_ENABLE_HIGH_CONTRAST,
71 UMA_STATUS_AREA_ENABLE_LARGE_CURSOR,
72 UMA_STATUS_AREA_ENABLE_MAGNIFIER,
73 UMA_STATUS_AREA_ENABLE_SPOKEN_FEEDBACK,
74 UMA_STATUS_AREA_ENABLE_WIFI,
75 UMA_STATUS_AREA_ENABLE_VIRTUAL_KEYBOARD,
76 UMA_STATUS_AREA_IME_SHOW_DETAILED,
77 UMA_STATUS_AREA_IME_SWITCH_MODE,
78 UMA_STATUS_AREA_MENU_OPENED,
79 UMA_STATUS_AREA_NETWORK_JOIN_OTHER_CLICKED,
80 UMA_STATUS_AREA_NETWORK_SETTINGS_CLICKED,
81 UMA_STATUS_AREA_SHOW_NETWORK_CONNECTION_DETAILS,
82 UMA_STATUS_AREA_SHOW_VPN_CONNECTION_DETAILS,
83 UMA_STATUS_AREA_SIGN_OUT,
84 UMA_STATUS_AREA_VPN_JOIN_OTHER_CLICKED,
85 UMA_STATUS_AREA_VPN_SETTINGS_CLICKED,
86 UMA_TOGGLE_MAXIMIZE_CAPTION_CLICK,
87 UMA_TOGGLE_MAXIMIZE_CAPTION_GESTURE,
88 UMA_TOGGLE_SINGLE_AXIS_MAXIMIZE_BORDER_CLICK,
89 UMA_TOUCHPAD_GESTURE_OVERVIEW,
90 UMA_TOUCHSCREEN_TAP_DOWN,
91 UMA_TRAY_HELP,
92 UMA_TRAY_LOCK_SCREEN,
93 UMA_TRAY_SHUT_DOWN,
94 UMA_WINDOW_APP_CLOSE_BUTTON_CLICK,
95 UMA_WINDOW_CLOSE_BUTTON_CLICK,
96 UMA_WINDOW_MAXIMIZE_BUTTON_CLICK_EXIT_FULLSCREEN,
97 UMA_WINDOW_MAXIMIZE_BUTTON_CLICK_MAXIMIZE,
98 UMA_WINDOW_MAXIMIZE_BUTTON_CLICK_MINIMIZE,
99 UMA_WINDOW_MAXIMIZE_BUTTON_CLICK_RESTORE,
100 UMA_WINDOW_MAXIMIZE_BUTTON_MAXIMIZE_LEFT,
101 UMA_WINDOW_MAXIMIZE_BUTTON_MAXIMIZE_RIGHT,
103 // Thumbnail sized overview of windows triggered. This is a subset of
104 // UMA_WINDOW_SELECTION triggered by lingering during alt+tab cycles or
105 // pressing the overview key.
106 UMA_WINDOW_OVERVIEW,
108 // Window selection started by beginning an alt+tab cycle or pressing the
109 // overview key. This does not count each step through an alt+tab cycle.
110 UMA_WINDOW_SELECTION,
113 // User Metrics Recorder provides a repeating callback (RecordPeriodicMetrics)
114 // on a timer to allow recording of state data over time to the UMA records.
115 // Any additional states (in ash) that require monitoring can be added to
116 // this class. As well calls to record on action metrics
117 // (RecordUserMetricsAction) are passed through the UserMetricsRecorder.
118 class ASH_EXPORT UserMetricsRecorder {
119 public:
120 UserMetricsRecorder();
121 ~UserMetricsRecorder();
123 void RecordUserMetricsAction(ash::UserMetricsAction action);
124 private:
125 void RecordPeriodicMetrics();
127 base::RepeatingTimer<UserMetricsRecorder> timer_;
130 } // namespace ash
132 #endif // ASH_USER_METRICS_RECORDER_H_