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_
11 #include "base/basictypes.h"
20 class ProfileMetrics
{
22 // Enum for counting the ways users were added.
24 ADD_NEW_USER_ICON
= 0, // User adds new user from icon menu
25 ADD_NEW_USER_MENU
, // User adds new user from menu bar
26 ADD_NEW_USER_DIALOG
, // User adds new user from create-profile dialog
27 NUM_PROFILE_ADD_METRICS
30 // Enum for counting the ways user profiles and menus were opened.
32 NTP_AVATAR_BUBBLE
= 0, // User opens avatar icon menu from NTP
33 ICON_AVATAR_BUBBLE
, // User opens avatar icon menu from icon
34 SWITCH_PROFILE_ICON
, // User switches profiles from icon menu
35 SWITCH_PROFILE_MENU
, // User switches profiles from menu bar
36 SWITCH_PROFILE_DOCK
, // User switches profiles from dock (Mac-only)
37 NUM_PROFILE_OPEN_METRICS
40 // Enum for getting net counts for adding and deleting users.
41 enum ProfileNetUserCounts
{
42 ADD_NEW_USER
= 0, // Total count of add new user
43 PROFILE_DELETED
, // User deleted a profile
44 NUM_PROFILE_NET_METRICS
47 // Sign in is logged once the user has entered their GAIA information.
48 // The options for sync are logged after the user has submitted the options
49 // form. See sync_setup_handler.h.
51 SYNC_CUSTOMIZE
= 0, // User decided to customize sync
52 SYNC_CHOOSE
, // User chose what to sync
53 SYNC_ENCRYPT
, // User has chosen to encrypt all data
54 SYNC_PASSPHRASE
, // User is using a passphrase
55 NUM_PROFILE_SYNC_METRICS
59 ORIGINAL
= 0, // Refers to the original/default profile
60 SECONDARY
, // Refers to a user-created profile
61 NUM_PROFILE_TYPE_METRICS
65 GAIA_OPT_IN
= 0, // User changed to GAIA photo as avatar
66 GAIA_OPT_OUT
, // User changed to not use GAIA photo as avatar
67 NUM_PROFILE_GAIA_METRICS
70 static void UpdateReportedProfilesStatistics(ProfileManager
* manager
);
72 static void LogNumberOfProfiles(ProfileManager
* manager
);
73 static void LogProfileAddNewUser(ProfileAdd metric
);
74 static void LogProfileAvatarSelection(size_t icon_index
);
75 static void LogProfileDeleteUser(ProfileNetUserCounts metric
);
76 static void LogProfileOpenMethod(ProfileOpen metric
);
77 static void LogProfileSwitchGaia(ProfileGaia metric
);
78 static void LogProfileSwitchUser(ProfileOpen metric
);
79 static void LogProfileSyncInfo(ProfileSync metric
);
81 // These functions should only be called on the UI thread because they hook
82 // into g_browser_process through a helper function.
83 static void LogProfileLaunch(Profile
* profile
);
84 static void LogProfileSyncSignIn(const base::FilePath
& profile_path
);
85 static void LogProfileUpdate(const base::FilePath
& profile_path
);
89 #endif // CHROME_BROWSER_PROFILES_PROFILE_METRICS_H_