Disable view source for Developer Tools.
[chromium-blink-merge.git] / chrome / browser / profiles / profile_metrics.h
blob58a056626d3bc9ae26842c9279b66a5b680328c8
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"
13 class Profile;
14 class ProfileManager;
16 namespace base {
17 class FilePath;
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
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
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.
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
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
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
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_