| // Copyright 2020 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "components/profile_metrics/state.h" |
| |
| #include "base/metrics/histogram_functions.h" |
| |
| namespace profile_metrics { |
| |
| namespace { |
| |
| std::string GetStateSuffix(StateSuffix suffix) { |
| switch (suffix) { |
| case StateSuffix::kAll: |
| return "_All"; |
| case StateSuffix::kActiveMultiProfile: |
| return "_ActiveMultiProfile"; |
| case StateSuffix::kLatentMultiProfile: |
| return "_LatentMultiProfile"; |
| case StateSuffix::kLatentMultiProfileActive: |
| return "_LatentMultiProfileActive"; |
| case StateSuffix::kLatentMultiProfileOthers: |
| return "_LatentMultiProfileOthers"; |
| case StateSuffix::kSingleProfile: |
| return "_SingleProfile"; |
| case StateSuffix::kUponDeletion: |
| return "_UponDeletion"; |
| } |
| } |
| |
| // Context for profile deletion. |
| // These values are persisted to logs. Entries should not be renumbered and |
| // numeric values should never be reused. |
| enum class DeleteProfileContext { |
| kWithoutBrowserLastProfile = 0, |
| kWithoutBrowserAdditionalProfile = 1, |
| kWithBrowserLastProfile = 2, |
| kWithBrowserAdditionalProfile = 3, |
| kMaxValue = kWithBrowserAdditionalProfile |
| }; |
| |
| } // namespace |
| |
| void LogProfileAvatar(AvatarState avatar_state, StateSuffix suffix) { |
| base::UmaHistogramEnumeration("Profile.State.Avatar" + GetStateSuffix(suffix), |
| avatar_state); |
| } |
| |
| void LogProfileName(NameState name_state, StateSuffix suffix) { |
| base::UmaHistogramEnumeration("Profile.State.Name" + GetStateSuffix(suffix), |
| name_state); |
| } |
| |
| void LogProfileAccountType(UnconsentedPrimaryAccountType account_type, |
| StateSuffix suffix) { |
| base::UmaHistogramEnumeration( |
| "Profile.State.UnconsentedPrimaryAccountType" + GetStateSuffix(suffix), |
| account_type); |
| } |
| |
| void LogProfileSyncEnabled(bool sync_enabled, StateSuffix suffix) { |
| base::UmaHistogramBoolean( |
| "Profile.State.SyncEnabled" + GetStateSuffix(suffix), sync_enabled); |
| } |
| |
| void LogProfileDaysSinceLastUse(int days_since_last_use, StateSuffix suffix) { |
| base::UmaHistogramCounts1000( |
| "Profile.State.LastUsed" + GetStateSuffix(suffix), days_since_last_use); |
| } |
| |
| void LogProfileDeletionContext(bool is_last_profile, bool no_browser_windows) { |
| DeleteProfileContext context; |
| if (no_browser_windows) { |
| if (is_last_profile) { |
| context = DeleteProfileContext::kWithoutBrowserLastProfile; |
| } else { |
| context = DeleteProfileContext::kWithoutBrowserAdditionalProfile; |
| } |
| } else { |
| if (is_last_profile) { |
| context = DeleteProfileContext::kWithBrowserLastProfile; |
| } else { |
| context = DeleteProfileContext::kWithBrowserAdditionalProfile; |
| } |
| } |
| base::UmaHistogramEnumeration("Profile.DeleteProfileContext", context); |
| } |
| |
| void LogProfileAllAccountsNames(AllAccountsNames names) { |
| base::UmaHistogramEnumeration("Profile.AllAccounts.Names", names); |
| } |
| |
| void LogProfileAllAccountsCategories(AllAccountsCategories categories) { |
| base::UmaHistogramEnumeration("Profile.AllAccounts.Categories", categories); |
| } |
| |
| } // namespace profile_metrics |