| Index: components/safe_browsing_db/safe_browsing_prefs.cc
|
| diff --git a/components/safe_browsing_db/safe_browsing_prefs.cc b/components/safe_browsing_db/safe_browsing_prefs.cc
|
| index c892abaec8723537e027c67bdd2f7ef98d2eab8b..cd84b28a2787b43586202b57459bcaf7ff3419e4 100644
|
| --- a/components/safe_browsing_db/safe_browsing_prefs.cc
|
| +++ b/components/safe_browsing_db/safe_browsing_prefs.cc
|
| @@ -14,6 +14,34 @@ const char kForceScoutGroupValueTrue[] = "true";
|
| // Switch value which force the ScoutGroupSelected pref to false.
|
| const char kForceScoutGroupValueFalse[] = "false";
|
|
|
| +// Name of the Scout Transition UMA metric.
|
| +const char kScoutTransitionMetricName[] = "SafeBrowsing.Pref.Scout.Transition";
|
| +
|
| +// Reasons that a state transition for Scout was performed.
|
| +// These values are written to logs. New enum values can be added, but
|
| +// existing enums must never be renumbered or deleted and reused.
|
| +enum ScoutTransitionReason {
|
| + // Flag forced Scout Group to true
|
| + FORCE_SCOUT_FLAG_TRUE = 0,
|
| + // Flag forced Scout Group to false
|
| + FORCE_SCOUT_FLAG_FALSE = 1,
|
| + // User in OnlyShowScout group, enters Scout Group
|
| + ONLY_SHOW_SCOUT_OPT_IN = 2,
|
| + // User in CanShowScout group, enters Scout Group immediately
|
| + CAN_SHOW_SCOUT_OPT_IN_SCOUT_GROUP_ON = 3,
|
| + // User in CanShowScout group, waiting for interstitial to enter Scout Group
|
| + CAN_SHOW_SCOUT_OPT_IN_WAIT_FOR_INTERSTITIAL = 4,
|
| + // User in Control group
|
| + CONTROL = 5,
|
| + // Rollback: SBER2 on on implies SBER1 can turn on
|
| + ROLLBACK_SBER2_IMPLIES_SBER1 = 6,
|
| + // Rollback: SBER2 off so SBER1 must be turned off
|
| + ROLLBACK_NO_SBER2_SET_SBER1_FALSE = 7,
|
| + // Rollback: SBER2 absent so SBER1 must be cleared
|
| + ROLLBACK_NO_SBER2_CLEAR_SBER1 = 8,
|
| + // New reasons must be added BEFORE MAX_REASONS
|
| + MAX_REASONS
|
| +};
|
| } // namespace
|
|
|
| namespace prefs {
|
| @@ -83,8 +111,12 @@ void InitializeSafeBrowsingPrefs(PrefService* prefs) {
|
| kSwitchForceScoutGroup);
|
| if (switch_value == kForceScoutGroupValueTrue) {
|
| prefs->SetBoolean(prefs::kSafeBrowsingScoutGroupSelected, true);
|
| + UMA_HISTOGRAM_ENUMERATION(kScoutTransitionMetricName,
|
| + FORCE_SCOUT_FLAG_TRUE, MAX_REASONS);
|
| } else if (switch_value == kForceScoutGroupValueFalse) {
|
| prefs->SetBoolean(prefs::kSafeBrowsingScoutGroupSelected, false);
|
| + UMA_HISTOGRAM_ENUMERATION(kScoutTransitionMetricName,
|
| + FORCE_SCOUT_FLAG_FALSE, MAX_REASONS);
|
| }
|
|
|
| // If the switch is used, don't process the experiment state.
|
| @@ -95,6 +127,8 @@ void InitializeSafeBrowsingPrefs(PrefService* prefs) {
|
| if (base::FeatureList::IsEnabled(kOnlyShowScoutOptIn)) {
|
| // OnlyShowScoutOptIn immediately turns on ScoutGroupSelected pref.
|
| prefs->SetBoolean(prefs::kSafeBrowsingScoutGroupSelected, true);
|
| + UMA_HISTOGRAM_ENUMERATION(kScoutTransitionMetricName,
|
| + ONLY_SHOW_SCOUT_OPT_IN, MAX_REASONS);
|
| } else if (base::FeatureList::IsEnabled(kCanShowScoutOptIn)) {
|
| // CanShowScoutOptIn will only turn on ScoutGroupSelected pref if the legacy
|
| // SBER pref is false. Otherwise the legacy SBER pref will stay on and
|
| @@ -102,16 +136,26 @@ void InitializeSafeBrowsingPrefs(PrefService* prefs) {
|
| // the Scout pref will become the active one.
|
| if (!prefs->GetBoolean(prefs::kSafeBrowsingExtendedReportingEnabled)) {
|
| prefs->SetBoolean(prefs::kSafeBrowsingScoutGroupSelected, true);
|
| + UMA_HISTOGRAM_ENUMERATION(kScoutTransitionMetricName,
|
| + CAN_SHOW_SCOUT_OPT_IN_SCOUT_GROUP_ON,
|
| + MAX_REASONS);
|
| + } else {
|
| + UMA_HISTOGRAM_ENUMERATION(kScoutTransitionMetricName,
|
| + CAN_SHOW_SCOUT_OPT_IN_WAIT_FOR_INTERSTITIAL,
|
| + MAX_REASONS);
|
| }
|
| } else {
|
| // Both experiment features are off, so this is the Control group. We must
|
| // handle the possibility that the user was previously in an experiment
|
| // group (above) that was reverted. We want to restore the user to a
|
| // reasonable state based on the ScoutGroup and ScoutReporting preferences.
|
| + UMA_HISTOGRAM_ENUMERATION(kScoutTransitionMetricName, CONTROL, MAX_REASONS);
|
| if (prefs->GetBoolean(prefs::kSafeBrowsingScoutReportingEnabled)) {
|
| // User opted-in to Scout which is broader than legacy Extended Reporting.
|
| // Opt them in to Extended Reporting.
|
| prefs->SetBoolean(prefs::kSafeBrowsingExtendedReportingEnabled, true);
|
| + UMA_HISTOGRAM_ENUMERATION(kScoutTransitionMetricName,
|
| + ROLLBACK_SBER2_IMPLIES_SBER1, MAX_REASONS);
|
| } else if (prefs->GetBoolean(prefs::kSafeBrowsingScoutGroupSelected)) {
|
| // User was in the Scout Group (ie: seeing the Scout opt-in text) but did
|
| // NOT opt-in to Scout. Assume this was a conscious choice and remove
|
| @@ -124,9 +168,14 @@ void InitializeSafeBrowsingPrefs(PrefService* prefs) {
|
| // Scout Reporting pref was explicitly set to false, so set the SBER
|
| // pref to false.
|
| prefs->SetBoolean(prefs::kSafeBrowsingExtendedReportingEnabled, false);
|
| + UMA_HISTOGRAM_ENUMERATION(kScoutTransitionMetricName,
|
| + ROLLBACK_NO_SBER2_SET_SBER1_FALSE,
|
| + MAX_REASONS);
|
| } else {
|
| // Scout Reporting pref is unset, so clear the SBER pref.
|
| prefs->ClearPref(prefs::kSafeBrowsingExtendedReportingEnabled);
|
| + UMA_HISTOGRAM_ENUMERATION(kScoutTransitionMetricName,
|
| + ROLLBACK_NO_SBER2_CLEAR_SBER1, MAX_REASONS);
|
| }
|
| }
|
|
|
|
|