GoogleURLTrackerInfoBarDelegate: Initialize uninitialized member in constructor.
[chromium-blink-merge.git] / chrome / browser / profiles / profile_metrics.h
blob4d7fdc683ba54eb11cb4c8c5d1bbd840e0fbd956
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
3 // found in the LICENSE file.
5 #ifndef CHROME_BROWSER_PROFILES_PROFILE_METRICS_H_
6 #define CHROME_BROWSER_PROFILES_PROFILE_METRICS_H_
8 #include <stddef.h>
9 #include <string>
11 #include "base/basictypes.h"
12 #include "chrome/browser/signin/signin_header_helper.h"
14 class Profile;
15 class ProfileManager;
17 namespace base {
18 class FilePath;
21 class ProfileMetrics {
22 public:
23 // Enum for counting the ways users were added.
24 enum ProfileAdd {
25 ADD_NEW_USER_ICON = 0, // User adds new user from icon menu
26 ADD_NEW_USER_MENU, // User adds new user from menu bar
27 ADD_NEW_USER_DIALOG, // User adds new user from create-profile dialog
28 ADD_NEW_USER_MANAGER, // User adds new user from User Manager
29 NUM_PROFILE_ADD_METRICS
32 // Enum for counting the ways user profiles and menus were opened.
33 enum ProfileOpen {
34 NTP_AVATAR_BUBBLE = 0, // User opens avatar icon menu from NTP
35 ICON_AVATAR_BUBBLE, // User opens avatar icon menu from icon
36 SWITCH_PROFILE_ICON, // User switches profiles from icon menu
37 SWITCH_PROFILE_MENU, // User switches profiles from menu bar
38 SWITCH_PROFILE_DOCK, // User switches profiles from dock (Mac-only)
39 OPEN_USER_MANAGER, // User opens the User Manager
40 SWITCH_PROFILE_MANAGER, // User switches profiles from the User Manager
41 SWITCH_PROFILE_UNLOCK, // User switches to lockd profile via User Manager
42 SWITCH_PROFILE_GUEST, // User switches to guest profile
43 NUM_PROFILE_OPEN_METRICS
46 // Enum for getting net counts for adding and deleting users.
47 enum ProfileNetUserCounts {
48 ADD_NEW_USER = 0, // Total count of add new user
49 PROFILE_DELETED, // User deleted a profile
50 NUM_PROFILE_NET_METRICS
53 // Sign in is logged once the user has entered their GAIA information.
54 // The options for sync are logged after the user has submitted the options
55 // form. See sync_setup_handler.h.
56 enum ProfileSync {
57 SYNC_CUSTOMIZE = 0, // User decided to customize sync
58 SYNC_CHOOSE, // User chose what to sync
59 SYNC_ENCRYPT, // User has chosen to encrypt all data
60 SYNC_PASSPHRASE, // User is using a passphrase
61 NUM_PROFILE_SYNC_METRICS
64 enum ProfileType {
65 ORIGINAL = 0, // Refers to the original/default profile
66 SECONDARY, // Refers to a user-created profile
67 NUM_PROFILE_TYPE_METRICS
70 enum ProfileGaia {
71 GAIA_OPT_IN = 0, // User changed to GAIA photo as avatar
72 GAIA_OPT_OUT, // User changed to not use GAIA photo as avatar
73 NUM_PROFILE_GAIA_METRICS
76 enum ProfileAuth {
77 AUTH_UNNECESSARY, // Profile was not locked
78 AUTH_LOCAL, // Profile was authenticated locally
79 AUTH_ONLINE, // Profile was authenticated on-line
80 AUTH_FAILED, // Profile failed authentication
81 NUM_PROFILE_AUTH_METRICS
84 // Enum for tracking if new profile management is enabled and Promo views.
85 // This is used in a histogram; the items should not be removed or re-ordered.
86 enum ProfileUpgradeEnrollment {
87 // User viewed the Upgrade promo card in the user menu.
88 PROFILE_ENROLLMENT_SHOW_PREVIEW_PROMO,
89 // User selected to view the intro tutorial.
90 PROFILE_ENROLLMENT_LAUNCH_LEARN_MORE,
91 // User opted into New Profile Management via Promo card.
92 PROFILE_ENROLLMENT_ACCEPT_NEW_PROFILE_MGMT,
93 // User closed the Upgrade card.
94 PROFILE_ENROLLMENT_CLOSE_WELCOME_CARD,
95 // User disabled New Profile Management.
96 PROFILE_ENROLLMENT_DISABLE_NEW_PROFILE_MGMT,
97 // User elected to send feedback.
98 PROFILE_ENROLLMENT_SEND_FEEDBACK,
99 NUM_PROFILE_ENROLLMENT_METRICS,
102 // Enum for tracking user interactions with the user menu and user manager.
103 // Interactions initiated from the content area are logged into a different
104 // histogram from those that were initiated from the avatar button.
105 // An example of the interaction beginning in the content area is
106 // clicking "Manage Accounts" within account selection on a Google property.
107 enum ProfileDesktopMenu {
108 // User opened the user menu, and clicked lock.
109 PROFILE_DESKTOP_MENU_LOCK = 0,
110 // User opened the user menu, and removed an account.
111 PROFILE_DESKTOP_MENU_REMOVE_ACCT,
112 // User opened the user menu, and started adding an account.
113 PROFILE_DESKTOP_MENU_ADD_ACCT,
114 // User opened the user menu, and changed the profile name.
115 PROFILE_DESKTOP_MENU_EDIT_NAME,
116 // User opened the user menu, and started selecting a new profile image.
117 PROFILE_DESKTOP_MENU_EDIT_IMAGE,
118 NUM_PROFILE_DESKTOP_MENU_METRICS,
121 #if defined(OS_ANDROID)
122 // TODO(aruslan): http://crbug.com/379987 Move to a generator.
123 // Enum for tracking user interactions with the account management menu
124 // on Android.
125 // This should match its counterpart in AccountManagementScreenHelper.java.
126 enum ProfileAndroidAccountManagementMenu {
127 // User arrived at the Account management screen.
128 PROFILE_ANDROID_ACCOUNT_MANAGEMENT_MENU_VIEW = 0,
129 // User arrived at the Account management screen, and clicked Add account.
130 PROFILE_ANDROID_ACCOUNT_MANAGEMENT_MENU_ADD_ACCOUNT,
131 // User arrived at the Account management screen, and clicked Go incognito.
132 PROFILE_ANDROID_ACCOUNT_MANAGEMENT_MENU_GO_INCOGNITO,
133 // User arrived at the Account management screen, and clicked on primary.
134 PROFILE_ANDROID_ACCOUNT_MANAGEMENT_MENU_CLICK_PRIMARY_ACCOUNT,
135 // User arrived at the Account management screen, and clicked on secondary.
136 PROFILE_ANDROID_ACCOUNT_MANAGEMENT_MENU_CLICK_SECONDARY_ACCOUNT,
137 // User arrived at the Account management screen, toggled Chrome signout.
138 PROFILE_ANDROID_ACCOUNT_MANAGEMENT_MENU_TOGGLE_SIGNOUT,
139 // User toggled Chrome signout, and clicked Signout.
140 PROFILE_ANDROID_ACCOUNT_MANAGEMENT_MENU_SIGNOUT_SIGNOUT,
141 // User toggled Chrome signout, and clicked Cancel.
142 PROFILE_ANDROID_ACCOUNT_MANAGEMENT_MENU_SIGNOUT_CANCEL,
143 NUM_PROFILE_ANDROID_ACCOUNT_MANAGEMENT_MENU_METRICS,
145 #endif // defined(OS_ANDROID)
147 static void UpdateReportedProfilesStatistics(ProfileManager* manager);
149 static void LogNumberOfProfiles(ProfileManager* manager);
150 static void LogProfileAddNewUser(ProfileAdd metric);
151 static void LogProfileAvatarSelection(size_t icon_index);
152 static void LogProfileDeleteUser(ProfileNetUserCounts metric);
153 static void LogProfileOpenMethod(ProfileOpen metric);
154 static void LogProfileSwitchGaia(ProfileGaia metric);
155 static void LogProfileSwitchUser(ProfileOpen metric);
156 static void LogProfileSyncInfo(ProfileSync metric);
157 static void LogProfileAuthResult(ProfileAuth metric);
158 static void LogProfileUpgradeEnrollment(ProfileUpgradeEnrollment metric);
159 static void LogProfileDesktopMenu(ProfileDesktopMenu metric,
160 signin::GAIAServiceType gaia_service);
162 #if defined(OS_ANDROID)
163 static void LogProfileAndroidAccountManagementMenu(
164 ProfileAndroidAccountManagementMenu metric,
165 signin::GAIAServiceType gaia_service);
166 #endif // defined(OS_ANDROID)
168 // These functions should only be called on the UI thread because they hook
169 // into g_browser_process through a helper function.
170 static void LogProfileLaunch(Profile* profile);
171 static void LogProfileSyncSignIn(const base::FilePath& profile_path);
172 static void LogProfileUpdate(const base::FilePath& profile_path);
176 #endif // CHROME_BROWSER_PROFILES_PROFILE_METRICS_H_