15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile_metrics.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/file_path.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/metrics/histogram.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/browser_process.h"
11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/profiles/profile.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile_info_cache.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile_manager.h"
14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/browser/signin/signin_header_helper.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/chrome_constants.h"
16a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "chrome/installer/util/google_update_settings.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/browser_thread.h"
18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "content/public/browser/user_metrics.h"
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)const int kMaximumReportedProfileCount = 5;
23a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)const int kMaximumDaysOfDisuse = 4 * 7;  // Should be integral number of weeks.
24a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
25a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)struct ProfileCounts {
26a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  size_t total;
27a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  size_t signedin;
28f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  size_t supervised;
29a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  size_t unused;
3046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  size_t gaia_icon;
31a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
3246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ProfileCounts()
33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      : total(0), signedin(0), supervised(0), unused(0), gaia_icon(0) {}
34a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)};
35a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ProfileMetrics::ProfileType GetProfileType(
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const base::FilePath& profile_path) {
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ProfileMetrics::ProfileType metric = ProfileMetrics::SECONDARY;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ProfileManager* manager = g_browser_process->profile_manager();
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  base::FilePath user_data_dir;
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // In unittests, we do not always have a profile_manager so check.
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (manager) {
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    user_data_dir = manager->user_data_dir();
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (profile_path == user_data_dir.AppendASCII(chrome::kInitialProfile)) {
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    metric = ProfileMetrics::ORIGINAL;
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return metric;
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
52a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)void UpdateReportedOSProfileStatistics(int active, int signedin) {
53a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#if defined(OS_WIN)
54a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  GoogleUpdateSettings::UpdateProfileCounts(active, signedin);
55a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif
56a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
57a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
58a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)bool CountProfileInformation(ProfileManager* manager, ProfileCounts* counts) {
59a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  const ProfileInfoCache& info_cache = manager->GetProfileInfoCache();
60a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  size_t number_of_profiles = info_cache.GetNumberOfProfiles();
61a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  counts->total = number_of_profiles;
62a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
63a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  // Ignore other metrics if we have no profiles, e.g. in Chrome Frame tests.
64a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  if (!number_of_profiles)
65a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    return false;
66a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
67a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // Maximum age for "active" profile is 4 weeks.
68a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  base::Time oldest = base::Time::Now() -
69a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      base::TimeDelta::FromDays(kMaximumDaysOfDisuse);
70a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
71a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  for (size_t i = 0; i < number_of_profiles; ++i) {
72a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    if (info_cache.GetProfileActiveTimeAtIndex(i) < oldest) {
73a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      counts->unused++;
74a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    } else {
75f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      if (info_cache.ProfileIsSupervisedAtIndex(i))
76f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        counts->supervised++;
7746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      if (!info_cache.GetUserNameOfProfileAtIndex(i).empty()) {
78a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        counts->signedin++;
7946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)        if (info_cache.IsUsingGAIAPictureOfProfileAtIndex(i))
8046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          counts->gaia_icon++;
8146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      }
82a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    }
83a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  }
84a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  return true;
85a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
86a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
87f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void LogLockedProfileInformation(ProfileManager* manager) {
88f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  const ProfileInfoCache& info_cache = manager->GetProfileInfoCache();
89f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  size_t number_of_profiles = info_cache.GetNumberOfProfiles();
90f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
91f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  base::Time now = base::Time::Now();
92f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  const int kMinutesInProfileValidDuration =
93f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      base::TimeDelta::FromDays(28).InMinutes();
94f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  for (size_t i = 0; i < number_of_profiles; ++i) {
95f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    // Find when locked profiles were locked
96f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    if (info_cache.ProfileIsSigninRequiredAtIndex(i)) {
97f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      base::TimeDelta time_since_lock = now -
98f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)          info_cache.GetProfileActiveTimeAtIndex(i);
99f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      // Specifying 100 buckets for the histogram to get a higher level of
100f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      // granularity in the reported data, given the large number of possible
101f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      // values (kMinutesInProfileValidDuration > 40,000).
102f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      UMA_HISTOGRAM_CUSTOM_COUNTS("Profile.LockedProfilesDuration",
103f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                  time_since_lock.InMinutes(),
104f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                  1,
105f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                  kMinutesInProfileValidDuration,
106f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                                  100);
107f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    }
108f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  }
109f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
110f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum ProfileAvatar {
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AVATAR_GENERIC = 0,       // The names for avatar icons
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AVATAR_GENERIC_AQUA,
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AVATAR_GENERIC_BLUE,
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AVATAR_GENERIC_GREEN,
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AVATAR_GENERIC_ORANGE,
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AVATAR_GENERIC_PURPLE,
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AVATAR_GENERIC_RED,
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AVATAR_GENERIC_YELLOW,
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AVATAR_SECRET_AGENT,
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AVATAR_SUPERHERO,
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AVATAR_VOLLEYBALL,        // 10
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AVATAR_BUSINESSMAN,
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AVATAR_NINJA,
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AVATAR_ALIEN,
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AVATAR_AWESOME,
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AVATAR_FLOWER,
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AVATAR_PIZZA,
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AVATAR_SOCCER,
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AVATAR_BURGER,
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AVATAR_CAT,
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AVATAR_CUPCAKE,           // 20
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AVATAR_DOG,
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AVATAR_HORSE,
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AVATAR_MARGARITA,
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AVATAR_NOTE,
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AVATAR_SUN_CLOUD,
1400529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  AVATAR_PLACEHOLDER,
1410529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  AVATAR_UNKNOWN,           // 27
1420529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  AVATAR_GAIA,              // 28
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NUM_PROFILE_AVATAR_METRICS
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
146a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)void ProfileMetrics::UpdateReportedProfilesStatistics(ProfileManager* manager) {
147a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  ProfileCounts counts;
148a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  if (CountProfileInformation(manager, &counts)) {
149a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    int limited_total = counts.total;
150a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    int limited_signedin = counts.signedin;
151a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    if (limited_total > kMaximumReportedProfileCount) {
152a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      limited_total = kMaximumReportedProfileCount + 1;
153a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      limited_signedin =
154a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)          (int)((float)(counts.signedin * limited_total)
155a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)          / counts.total + 0.5);
156a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    }
157a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    UpdateReportedOSProfileStatistics(limited_total, limited_signedin);
158a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  }
159a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
160a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
161c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void ProfileMetrics::LogNumberOfProfiles(ProfileManager* manager) {
162a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  ProfileCounts counts;
163a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  bool success = CountProfileInformation(manager, &counts);
164a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  UMA_HISTOGRAM_COUNTS_100("Profile.NumberOfProfiles", counts.total);
1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
166c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Ignore other metrics if we have no profiles, e.g. in Chrome Frame tests.
167a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  if (success) {
168c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    UMA_HISTOGRAM_COUNTS_100("Profile.NumberOfManagedProfiles",
169f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                             counts.supervised);
170c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    UMA_HISTOGRAM_COUNTS_100("Profile.PercentageOfManagedProfiles",
171f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                             100 * counts.supervised / counts.total);
172c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    UMA_HISTOGRAM_COUNTS_100("Profile.NumberOfSignedInProfiles",
173a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                             counts.signedin);
174a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    UMA_HISTOGRAM_COUNTS_100("Profile.NumberOfUnusedProfiles",
175a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                             counts.unused);
17646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    UMA_HISTOGRAM_COUNTS_100("Profile.NumberOfSignedInProfilesWithGAIAIcons",
17746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                             counts.gaia_icon);
178a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
179f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    LogLockedProfileInformation(manager);
180a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    UpdateReportedOSProfileStatistics(counts.total, counts.signedin);
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ProfileMetrics::LogProfileAddNewUser(ProfileAdd metric) {
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK(metric < NUM_PROFILE_ADD_METRICS);
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UMA_HISTOGRAM_ENUMERATION("Profile.AddNewUser", metric,
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            NUM_PROFILE_ADD_METRICS);
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UMA_HISTOGRAM_ENUMERATION("Profile.NetUserCount", ADD_NEW_USER,
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            NUM_PROFILE_NET_METRICS);
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ProfileMetrics::LogProfileAvatarSelection(size_t icon_index) {
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK(icon_index < NUM_PROFILE_AVATAR_METRICS);
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ProfileAvatar icon_name = AVATAR_UNKNOWN;
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  switch (icon_index) {
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case 0:
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      icon_name = AVATAR_GENERIC;
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case 1:
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      icon_name = AVATAR_GENERIC_AQUA;
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case 2:
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      icon_name = AVATAR_GENERIC_BLUE;
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case 3:
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      icon_name = AVATAR_GENERIC_GREEN;
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case 4:
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      icon_name = AVATAR_GENERIC_ORANGE;
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case 5:
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      icon_name = AVATAR_GENERIC_PURPLE;
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case 6:
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      icon_name = AVATAR_GENERIC_RED;
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case 7:
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      icon_name = AVATAR_GENERIC_YELLOW;
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case 8:
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      icon_name = AVATAR_SECRET_AGENT;
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case 9:
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      icon_name = AVATAR_SUPERHERO;
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case 10:
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      icon_name = AVATAR_VOLLEYBALL;
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case 11:
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      icon_name = AVATAR_BUSINESSMAN;
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case 12:
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      icon_name = AVATAR_NINJA;
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case 13:
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      icon_name = AVATAR_ALIEN;
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case 14:
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      icon_name = AVATAR_AWESOME;
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case 15:
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      icon_name = AVATAR_FLOWER;
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case 16:
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      icon_name = AVATAR_PIZZA;
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case 17:
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      icon_name = AVATAR_SOCCER;
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case 18:
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      icon_name = AVATAR_BURGER;
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case 19:
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      icon_name = AVATAR_CAT;
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case 20:
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      icon_name = AVATAR_CUPCAKE;
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case 21:
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      icon_name = AVATAR_DOG;
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case 22:
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      icon_name = AVATAR_HORSE;
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case 23:
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      icon_name = AVATAR_MARGARITA;
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case 24:
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      icon_name = AVATAR_NOTE;
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case 25:
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      icon_name = AVATAR_SUN_CLOUD;
2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
2740529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    case 26:
2750529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch      icon_name = AVATAR_PLACEHOLDER;
2760529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch      break;
2770529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    case 28:
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      icon_name = AVATAR_GAIA;
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    default:  // We should never actually get here.
2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      NOTREACHED();
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UMA_HISTOGRAM_ENUMERATION("Profile.Avatar", icon_name,
2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            NUM_PROFILE_AVATAR_METRICS);
2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ProfileMetrics::LogProfileDeleteUser(ProfileNetUserCounts metric) {
2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK(metric < NUM_PROFILE_NET_METRICS);
2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UMA_HISTOGRAM_ENUMERATION("Profile.NetUserCount", metric,
2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            NUM_PROFILE_NET_METRICS);
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ProfileMetrics::LogProfileOpenMethod(ProfileOpen metric) {
2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK(metric < NUM_PROFILE_OPEN_METRICS);
2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UMA_HISTOGRAM_ENUMERATION("Profile.OpenMethod", metric,
2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            NUM_PROFILE_OPEN_METRICS);
2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ProfileMetrics::LogProfileSwitchGaia(ProfileGaia metric) {
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (metric == GAIA_OPT_IN)
3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    LogProfileAvatarSelection(AVATAR_GAIA);
3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UMA_HISTOGRAM_ENUMERATION("Profile.SwitchGaiaPhotoSettings",
3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            metric,
3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            NUM_PROFILE_GAIA_METRICS);
3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ProfileMetrics::LogProfileSwitchUser(ProfileOpen metric) {
3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK(metric < NUM_PROFILE_OPEN_METRICS);
3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UMA_HISTOGRAM_ENUMERATION("Profile.OpenMethod", metric,
3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            NUM_PROFILE_OPEN_METRICS);
3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ProfileMetrics::LogProfileSyncInfo(ProfileSync metric) {
3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK(metric < NUM_PROFILE_SYNC_METRICS);
3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UMA_HISTOGRAM_ENUMERATION("Profile.SyncCustomize", metric,
3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            NUM_PROFILE_SYNC_METRICS);
3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void ProfileMetrics::LogProfileAuthResult(ProfileAuth metric) {
3215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  UMA_HISTOGRAM_ENUMERATION("Profile.AuthResult", metric,
3225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                            NUM_PROFILE_AUTH_METRICS);
3235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
3245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
325010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void ProfileMetrics::LogProfileUpgradeEnrollment(
326010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    ProfileUpgradeEnrollment metric) {
327010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  UMA_HISTOGRAM_ENUMERATION("Profile.UpgradeEnrollment", metric,
328010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)                            NUM_PROFILE_ENROLLMENT_METRICS);
329010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
330010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
331cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void ProfileMetrics::LogProfileDesktopMenu(
332cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    ProfileDesktopMenu metric,
333cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    signin::GAIAServiceType gaia_service) {
334cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // The first parameter to the histogram needs to be literal, because of the
335cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // optimized implementation of |UMA_HISTOGRAM_ENUMERATION|. Do not attempt
336cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // to refactor.
337cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  switch (gaia_service) {
338cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    case signin::GAIA_SERVICE_TYPE_NONE:
339cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      UMA_HISTOGRAM_ENUMERATION("Profile.DesktopMenu.NonGAIA", metric,
340cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                                NUM_PROFILE_DESKTOP_MENU_METRICS);
341cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      break;
342cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    case signin::GAIA_SERVICE_TYPE_SIGNOUT:
343cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      UMA_HISTOGRAM_ENUMERATION("Profile.DesktopMenu.GAIASignout", metric,
344cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                                NUM_PROFILE_DESKTOP_MENU_METRICS);
345cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      break;
34646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    case signin::GAIA_SERVICE_TYPE_INCOGNITO:
34746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      UMA_HISTOGRAM_ENUMERATION("Profile.DesktopMenu.GAIAIncognito",
348cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                                metric, NUM_PROFILE_DESKTOP_MENU_METRICS);
349cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      break;
350cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    case signin::GAIA_SERVICE_TYPE_ADDSESSION:
351cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      UMA_HISTOGRAM_ENUMERATION("Profile.DesktopMenu.GAIAAddSession", metric,
352cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                                NUM_PROFILE_DESKTOP_MENU_METRICS);
353cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      break;
354cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    case signin::GAIA_SERVICE_TYPE_REAUTH:
355cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      UMA_HISTOGRAM_ENUMERATION("Profile.DesktopMenu.GAIAReAuth", metric,
356cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                                NUM_PROFILE_DESKTOP_MENU_METRICS);
357cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      break;
358cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    case signin::GAIA_SERVICE_TYPE_DEFAULT:
359cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      UMA_HISTOGRAM_ENUMERATION("Profile.DesktopMenu.GAIADefault", metric,
360cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                                NUM_PROFILE_DESKTOP_MENU_METRICS);
361cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      break;
362cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  }
363cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
364cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
3656d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)void ProfileMetrics::LogProfileDelete(bool profile_was_signed_in) {
3666d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)  UMA_HISTOGRAM_BOOLEAN("Profile.Delete", profile_was_signed_in);
3676d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)}
3686d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)
36946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#if defined(OS_ANDROID)
37046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)void ProfileMetrics::LogProfileAndroidAccountManagementMenu(
37146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    ProfileAndroidAccountManagementMenu metric,
37246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    signin::GAIAServiceType gaia_service) {
37346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // The first parameter to the histogram needs to be literal, because of the
37446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // optimized implementation of |UMA_HISTOGRAM_ENUMERATION|. Do not attempt
37546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // to refactor.
37646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  switch (gaia_service) {
37746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    case signin::GAIA_SERVICE_TYPE_NONE:
37846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      UMA_HISTOGRAM_ENUMERATION(
37946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          "Profile.AndroidAccountManagementMenu.NonGAIA",
38046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          metric,
38146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          NUM_PROFILE_ANDROID_ACCOUNT_MANAGEMENT_MENU_METRICS);
38246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      break;
38346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    case signin::GAIA_SERVICE_TYPE_SIGNOUT:
38446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      UMA_HISTOGRAM_ENUMERATION(
38546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          "Profile.AndroidAccountManagementMenu.GAIASignout",
38646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          metric,
38746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          NUM_PROFILE_ANDROID_ACCOUNT_MANAGEMENT_MENU_METRICS);
38846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      break;
38946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    case signin::GAIA_SERVICE_TYPE_INCOGNITO:
39046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      UMA_HISTOGRAM_ENUMERATION(
39146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          "Profile.AndroidAccountManagementMenu.GAIASignoutIncognito",
39246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          metric,
39346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          NUM_PROFILE_ANDROID_ACCOUNT_MANAGEMENT_MENU_METRICS);
39446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      break;
39546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    case signin::GAIA_SERVICE_TYPE_ADDSESSION:
39646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      UMA_HISTOGRAM_ENUMERATION(
39746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          "Profile.AndroidAccountManagementMenu.GAIAAddSession",
39846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          metric,
39946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          NUM_PROFILE_ANDROID_ACCOUNT_MANAGEMENT_MENU_METRICS);
40046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      break;
40146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    case signin::GAIA_SERVICE_TYPE_REAUTH:
40246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      UMA_HISTOGRAM_ENUMERATION(
40346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          "Profile.AndroidAccountManagementMenu.GAIAReAuth",
40446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          metric,
40546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          NUM_PROFILE_ANDROID_ACCOUNT_MANAGEMENT_MENU_METRICS);
40646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      break;
40746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    case signin::GAIA_SERVICE_TYPE_DEFAULT:
40846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      UMA_HISTOGRAM_ENUMERATION(
40946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          "Profile.AndroidAccountManagementMenu.GAIADefault",
41046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          metric,
41146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          NUM_PROFILE_ANDROID_ACCOUNT_MANAGEMENT_MENU_METRICS);
41246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      break;
41346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  }
41446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
41546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#endif  // defined(OS_ANDROID)
41646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
417c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void ProfileMetrics::LogProfileLaunch(Profile* profile) {
418c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  base::FilePath profile_path = profile->GetPath();
4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UMA_HISTOGRAM_ENUMERATION("Profile.LaunchBrowser",
4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            GetProfileType(profile_path),
4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            NUM_PROFILE_TYPE_METRICS);
422c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
423f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  if (profile->IsSupervised()) {
424c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    content::RecordAction(
4255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        base::UserMetricsAction("ManagedMode_NewManagedUserWindow"));
426c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  }
4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void ProfileMetrics::LogProfileSyncSignIn(const base::FilePath& profile_path) {
4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UMA_HISTOGRAM_ENUMERATION("Profile.SyncSignIn",
4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            GetProfileType(profile_path),
4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            NUM_PROFILE_TYPE_METRICS);
4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void ProfileMetrics::LogProfileUpdate(const base::FilePath& profile_path) {
4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UMA_HISTOGRAM_ENUMERATION("Profile.Update",
4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            GetProfileType(profile_path),
4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            NUM_PROFILE_TYPE_METRICS);
4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
440