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. 4 5 #ifndef CHROME_BROWSER_PROFILES_PROFILE_METRICS_H_ 6 #define CHROME_BROWSER_PROFILES_PROFILE_METRICS_H_ 7 8 #include <stddef.h> 9 #include <string> 10 11 #include "base/basictypes.h" 12 13 class Profile; 14 class ProfileManager; 15 16 namespace base { 17 class FilePath; 18 } 19 20 class ProfileMetrics { 21 public: 22 // Enum for counting the ways users were added. 23 enum ProfileAdd { 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 28 }; 29 30 // Enum for counting the ways user profiles and menus were opened. 31 enum ProfileOpen { 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 38 }; 39 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 45 }; 46 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. 50 enum ProfileSync { 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 56 }; 57 58 enum ProfileType { 59 ORIGINAL = 0, // Refers to the original/default profile 60 SECONDARY, // Refers to a user-created profile 61 NUM_PROFILE_TYPE_METRICS 62 }; 63 64 enum ProfileGaia { 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 68 }; 69 70 static void UpdateReportedProfilesStatistics(ProfileManager* manager); 71 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); 80 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); 86 }; 87 88 89 #endif // CHROME_BROWSER_PROFILES_PROFILE_METRICS_H_ 90