123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- // 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.
- #ifndef COMPONENTS_PROFILE_METRICS_STATE_H_
- #define COMPONENTS_PROFILE_METRICS_STATE_H_
- namespace profile_metrics {
- // State for a profile avatar, documenting what Chrome UI exactly shows.
- // These values are persisted to logs. Entries should not be renumbered and
- // numeric values should never be reused.
- enum class AvatarState {
- // All SignedIn* states denote having a primary account (incl. unconsented,
- // not necessarily syncing).
- kSignedInGaia =
- 0, // User has the avatar from GAIA (the default for signed-in users).
- kSignedInModern = 1, // User has explicitly selected a modern avatar.
- kSignedInOld = 2, // User has explicitly selected an old avatar.
- kSignedOutDefault = 3, // Grey silhouette.
- kSignedOutModern = 4, // User has explicitly selected a modern avatar.
- kSignedOutOld = 5, // User has explicitly selected an old avatar.
- kMaxValue = kSignedOutOld
- };
- // State for a profile name, documenting what Chrome UI exactly shows.
- // These values are persisted to logs. Entries should not be renumbered and
- // numeric values should never be reused.
- enum class NameState {
- kGaiaName = 0, // The name of the user from Gaia.
- kGaiaAndCustomName = 1, // The name of the user from Gaia and the custom
- // local name specified by the user.
- kGaiaAndDefaultName = 2, // Chrome shows "Person X" alongside the Gaia name
- // because it is needed to resolve ambiguity.
- kCustomName = 3, // Only a custom name of the profile specified by the user.
- kDefaultName = 4, // Only "Person X" since there's nothing better.
- kMaxValue = kDefaultName
- };
- // Type of the unconsented primary account in a profile.
- // These values are persisted to logs. Entries should not be renumbered and
- // numeric values should never be reused.
- enum class UnconsentedPrimaryAccountType {
- kConsumer = 0,
- kEnterprise = 1,
- kChild = 2,
- kSignedOut = 3,
- kMaxValue = kSignedOut
- };
- // Classification of what gaia names appear or appeared in this profile since
- // the last time gaia cookies got deleted. Thus, this also includes signed-out
- // accounts. In order to protect privacy, only classifies whether multiple
- // distinct gaia names appeared in this profile and if so, whether sync is
- // enabled for one of them. Furthermore, this classification uses a low-entropy
- // hash to detect distinct names. In case of a rare hash collision (less than
- // 0.1% of cases), multiple names get recorded as a single name. Entries should
- // not be renumbered and numeric values should never be reused.
- enum class AllAccountsNames {
- kLikelySingleName = 0, // Gets also rare false records due to hash collision.
- kMultipleNamesWithoutSync = 1,
- kMultipleNamesWithSync = 2,
- kMaxValue = kMultipleNamesWithSync
- };
- // Classification of what account categories out of {consumer, enterprise}
- // appear or appeared in this profile since the last time gaia cookies got
- // deleted. Thus, this also includes signed-out accounts. If both categories
- // appeared, it also distinguishes whether sync is enabled and for which of
- // them. Entries should not be renumbered and numeric values should never be
- // reused.
- enum class AllAccountsCategories {
- kSingleCategory = 0,
- kBothConsumerAndEnterpriseNoSync = 1,
- kBothConsumerAndEnterpriseSyncingConsumer = 2,
- kBothConsumerAndEnterpriseSyncingEnterprise = 3,
- kMaxValue = kBothConsumerAndEnterpriseSyncingEnterprise
- };
- // Different types of reporting for profile state. This is used as a histogram
- // suffix.
- enum class StateSuffix {
- kAll, // Recorded for all clients and all their profiles.
- kActiveMultiProfile, // Recorded for multi-profile users with >=2 active
- // profiles, for all their profiles.
- kLatentMultiProfile, // Recorded for multi-profile users with one active
- // profile, for all their profiles.
- kLatentMultiProfileActive, // Recorded for multi-profile users with one
- // active profile, only for the active profile.
- kLatentMultiProfileOthers, // Recorded for multi-profile users with one
- // active profile, only for the non-active
- // profiles.
- kSingleProfile, // Recorded for single-profile users for their single
- // profile.
- kUponDeletion // Recorded whenever a profile gets deleted.
- };
- // Records the state of profile's avatar.
- void LogProfileAvatar(AvatarState avatar_state, StateSuffix suffix);
- // Records the state of profile's name.
- void LogProfileName(NameState name_state, StateSuffix suffix);
- // Records the state of profile's UPA.
- void LogProfileAccountType(UnconsentedPrimaryAccountType account_type,
- StateSuffix suffix);
- // Records the state of profile's sync.
- void LogProfileSyncEnabled(bool sync_enabled, StateSuffix suffix);
- // Records the days since last use of a profile.
- void LogProfileDaysSinceLastUse(int days_since_last_use, StateSuffix suffix);
- // Records the context of a profile deletion, whether it is the last profile and
- // whether it happens while no browser windows are opened.
- void LogProfileDeletionContext(bool is_last_profile, bool no_browser_windows);
- // Records the state of account names used in multi-login.
- void LogProfileAllAccountsNames(AllAccountsNames names);
- // Records the state of account categories used in multi-login.
- void LogProfileAllAccountsCategories(AllAccountsCategories categories);
- } // namespace profile_metrics
- #endif // COMPONENTS_PROFILE_METRICS_STATE_H_
|