Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(58)

Side by Side Diff: components/safe_browsing_db/safe_browsing_prefs.cc

Issue 2544093002: Add UMA stats for Scout initialization logic (Closed)
Patch Set: Add more comments to reasons enum Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2016 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/command_line.h" 5 #include "base/command_line.h"
6 #include "base/metrics/histogram_macros.h" 6 #include "base/metrics/histogram_macros.h"
7 #include "components/prefs/pref_service.h" 7 #include "components/prefs/pref_service.h"
8 #include "components/safe_browsing_db/safe_browsing_prefs.h" 8 #include "components/safe_browsing_db/safe_browsing_prefs.h"
9 9
10 namespace { 10 namespace {
11 11
12 // Switch value which force the ScoutGroupSelected pref to true. 12 // Switch value which force the ScoutGroupSelected pref to true.
13 const char kForceScoutGroupValueTrue[] = "true"; 13 const char kForceScoutGroupValueTrue[] = "true";
14 // Switch value which force the ScoutGroupSelected pref to false. 14 // Switch value which force the ScoutGroupSelected pref to false.
15 const char kForceScoutGroupValueFalse[] = "false"; 15 const char kForceScoutGroupValueFalse[] = "false";
16 16
17 // Name of the Scout Transition UMA metric.
18 const char kScoutTransitionMetricName[] = "SafeBrowsing.Pref.Scout.Transition";
19
20 // Reasons that a state transition for Scout was performed.
21 // These values are written to logs. New enum values can be added, but
22 // existing enums must never be renumbered or deleted and reused.
23 enum ScoutTransitionReason {
24 // Flag forced Scout Group to true
25 FORCE_SCOUT_FLAG_TRUE = 0,
26 // Flag forced Scout Group to false
27 FORCE_SCOUT_FLAG_FALSE = 1,
28 // User in OnlyShowScout group, enters Scout Group
29 ONLY_SHOW_SCOUT_OPT_IN = 2,
30 // User in CanShowScout group, enters Scout Group immediately
31 CAN_SHOW_SCOUT_OPT_IN_SCOUT_GROUP_ON = 3,
32 // User in CanShowScout group, waiting for interstitial to enter Scout Group
33 CAN_SHOW_SCOUT_OPT_IN_WAIT_FOR_INTERSTITIAL = 4,
34 // User in Control group
35 CONTROL = 5,
36 // Rollback: SBER2 on on implies SBER1 can turn on
37 ROLLBACK_SBER2_IMPLIES_SBER1 = 6,
38 // Rollback: SBER2 off so SBER1 must be turned off
39 ROLLBACK_NO_SBER2_SET_SBER1_FALSE = 7,
40 // Rollback: SBER2 absent so SBER1 must be cleared
41 ROLLBACK_NO_SBER2_CLEAR_SBER1 = 8,
42 // New reasons must be added BEFORE MAX_REASONS
43 MAX_REASONS
44 };
17 } // namespace 45 } // namespace
18 46
19 namespace prefs { 47 namespace prefs {
20 const char kSafeBrowsingExtendedReportingEnabled[] = 48 const char kSafeBrowsingExtendedReportingEnabled[] =
21 "safebrowsing.extended_reporting_enabled"; 49 "safebrowsing.extended_reporting_enabled";
22 const char kSafeBrowsingScoutReportingEnabled[] = 50 const char kSafeBrowsingScoutReportingEnabled[] =
23 "safebrowsing.scout_reporting_enabled"; 51 "safebrowsing.scout_reporting_enabled";
24 const char kSafeBrowsingScoutGroupSelected[] = 52 const char kSafeBrowsingScoutGroupSelected[] =
25 "safebrowsing.scout_group_selected"; 53 "safebrowsing.scout_group_selected";
26 } // namespace prefs 54 } // namespace prefs
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 104
77 void InitializeSafeBrowsingPrefs(PrefService* prefs) { 105 void InitializeSafeBrowsingPrefs(PrefService* prefs) {
78 // First handle forcing kSafeBrowsingScoutGroupSelected pref via cmd-line. 106 // First handle forcing kSafeBrowsingScoutGroupSelected pref via cmd-line.
79 if (base::CommandLine::ForCurrentProcess()->HasSwitch( 107 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
80 kSwitchForceScoutGroup)) { 108 kSwitchForceScoutGroup)) {
81 std::string switch_value = 109 std::string switch_value =
82 base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( 110 base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
83 kSwitchForceScoutGroup); 111 kSwitchForceScoutGroup);
84 if (switch_value == kForceScoutGroupValueTrue) { 112 if (switch_value == kForceScoutGroupValueTrue) {
85 prefs->SetBoolean(prefs::kSafeBrowsingScoutGroupSelected, true); 113 prefs->SetBoolean(prefs::kSafeBrowsingScoutGroupSelected, true);
114 UMA_HISTOGRAM_ENUMERATION(kScoutTransitionMetricName,
115 FORCE_SCOUT_FLAG_TRUE, MAX_REASONS);
86 } else if (switch_value == kForceScoutGroupValueFalse) { 116 } else if (switch_value == kForceScoutGroupValueFalse) {
87 prefs->SetBoolean(prefs::kSafeBrowsingScoutGroupSelected, false); 117 prefs->SetBoolean(prefs::kSafeBrowsingScoutGroupSelected, false);
118 UMA_HISTOGRAM_ENUMERATION(kScoutTransitionMetricName,
119 FORCE_SCOUT_FLAG_FALSE, MAX_REASONS);
88 } 120 }
89 121
90 // If the switch is used, don't process the experiment state. 122 // If the switch is used, don't process the experiment state.
91 return; 123 return;
92 } 124 }
93 125
94 // Handle the three possible experiment states. 126 // Handle the three possible experiment states.
95 if (base::FeatureList::IsEnabled(kOnlyShowScoutOptIn)) { 127 if (base::FeatureList::IsEnabled(kOnlyShowScoutOptIn)) {
96 // OnlyShowScoutOptIn immediately turns on ScoutGroupSelected pref. 128 // OnlyShowScoutOptIn immediately turns on ScoutGroupSelected pref.
97 prefs->SetBoolean(prefs::kSafeBrowsingScoutGroupSelected, true); 129 prefs->SetBoolean(prefs::kSafeBrowsingScoutGroupSelected, true);
130 UMA_HISTOGRAM_ENUMERATION(kScoutTransitionMetricName,
131 ONLY_SHOW_SCOUT_OPT_IN, MAX_REASONS);
98 } else if (base::FeatureList::IsEnabled(kCanShowScoutOptIn)) { 132 } else if (base::FeatureList::IsEnabled(kCanShowScoutOptIn)) {
99 // CanShowScoutOptIn will only turn on ScoutGroupSelected pref if the legacy 133 // CanShowScoutOptIn will only turn on ScoutGroupSelected pref if the legacy
100 // SBER pref is false. Otherwise the legacy SBER pref will stay on and 134 // SBER pref is false. Otherwise the legacy SBER pref will stay on and
101 // continue to be used until the next security incident, at which point 135 // continue to be used until the next security incident, at which point
102 // the Scout pref will become the active one. 136 // the Scout pref will become the active one.
103 if (!prefs->GetBoolean(prefs::kSafeBrowsingExtendedReportingEnabled)) { 137 if (!prefs->GetBoolean(prefs::kSafeBrowsingExtendedReportingEnabled)) {
104 prefs->SetBoolean(prefs::kSafeBrowsingScoutGroupSelected, true); 138 prefs->SetBoolean(prefs::kSafeBrowsingScoutGroupSelected, true);
139 UMA_HISTOGRAM_ENUMERATION(kScoutTransitionMetricName,
140 CAN_SHOW_SCOUT_OPT_IN_SCOUT_GROUP_ON,
141 MAX_REASONS);
142 } else {
143 UMA_HISTOGRAM_ENUMERATION(kScoutTransitionMetricName,
144 CAN_SHOW_SCOUT_OPT_IN_WAIT_FOR_INTERSTITIAL,
145 MAX_REASONS);
105 } 146 }
106 } else { 147 } else {
107 // Both experiment features are off, so this is the Control group. We must 148 // Both experiment features are off, so this is the Control group. We must
108 // handle the possibility that the user was previously in an experiment 149 // handle the possibility that the user was previously in an experiment
109 // group (above) that was reverted. We want to restore the user to a 150 // group (above) that was reverted. We want to restore the user to a
110 // reasonable state based on the ScoutGroup and ScoutReporting preferences. 151 // reasonable state based on the ScoutGroup and ScoutReporting preferences.
152 UMA_HISTOGRAM_ENUMERATION(kScoutTransitionMetricName, CONTROL, MAX_REASONS);
111 if (prefs->GetBoolean(prefs::kSafeBrowsingScoutReportingEnabled)) { 153 if (prefs->GetBoolean(prefs::kSafeBrowsingScoutReportingEnabled)) {
112 // User opted-in to Scout which is broader than legacy Extended Reporting. 154 // User opted-in to Scout which is broader than legacy Extended Reporting.
113 // Opt them in to Extended Reporting. 155 // Opt them in to Extended Reporting.
114 prefs->SetBoolean(prefs::kSafeBrowsingExtendedReportingEnabled, true); 156 prefs->SetBoolean(prefs::kSafeBrowsingExtendedReportingEnabled, true);
157 UMA_HISTOGRAM_ENUMERATION(kScoutTransitionMetricName,
158 ROLLBACK_SBER2_IMPLIES_SBER1, MAX_REASONS);
115 } else if (prefs->GetBoolean(prefs::kSafeBrowsingScoutGroupSelected)) { 159 } else if (prefs->GetBoolean(prefs::kSafeBrowsingScoutGroupSelected)) {
116 // User was in the Scout Group (ie: seeing the Scout opt-in text) but did 160 // User was in the Scout Group (ie: seeing the Scout opt-in text) but did
117 // NOT opt-in to Scout. Assume this was a conscious choice and remove 161 // NOT opt-in to Scout. Assume this was a conscious choice and remove
118 // their legacy Extended Reporting opt-in as well. The user will have a 162 // their legacy Extended Reporting opt-in as well. The user will have a
119 // chance to evaluate their choice next time they see the opt-in text. 163 // chance to evaluate their choice next time they see the opt-in text.
120 164
121 // We make the Extended Reporting pref mimic the state of the Scout 165 // We make the Extended Reporting pref mimic the state of the Scout
122 // Reporting pref. So we either Clear it or set it to False. 166 // Reporting pref. So we either Clear it or set it to False.
123 if (prefs->HasPrefPath(prefs::kSafeBrowsingScoutReportingEnabled)) { 167 if (prefs->HasPrefPath(prefs::kSafeBrowsingScoutReportingEnabled)) {
124 // Scout Reporting pref was explicitly set to false, so set the SBER 168 // Scout Reporting pref was explicitly set to false, so set the SBER
125 // pref to false. 169 // pref to false.
126 prefs->SetBoolean(prefs::kSafeBrowsingExtendedReportingEnabled, false); 170 prefs->SetBoolean(prefs::kSafeBrowsingExtendedReportingEnabled, false);
171 UMA_HISTOGRAM_ENUMERATION(kScoutTransitionMetricName,
172 ROLLBACK_NO_SBER2_SET_SBER1_FALSE,
173 MAX_REASONS);
127 } else { 174 } else {
128 // Scout Reporting pref is unset, so clear the SBER pref. 175 // Scout Reporting pref is unset, so clear the SBER pref.
129 prefs->ClearPref(prefs::kSafeBrowsingExtendedReportingEnabled); 176 prefs->ClearPref(prefs::kSafeBrowsingExtendedReportingEnabled);
177 UMA_HISTOGRAM_ENUMERATION(kScoutTransitionMetricName,
178 ROLLBACK_NO_SBER2_CLEAR_SBER1, MAX_REASONS);
130 } 179 }
131 } 180 }
132 181
133 // Also clear both the Scout settings to start over from a clean state and 182 // Also clear both the Scout settings to start over from a clean state and
134 // avoid the above logic from triggering on next restart. 183 // avoid the above logic from triggering on next restart.
135 prefs->ClearPref(prefs::kSafeBrowsingScoutGroupSelected); 184 prefs->ClearPref(prefs::kSafeBrowsingScoutGroupSelected);
136 prefs->ClearPref(prefs::kSafeBrowsingScoutReportingEnabled); 185 prefs->ClearPref(prefs::kSafeBrowsingScoutReportingEnabled);
137 } 186 }
138 } 187 }
139 188
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 231
183 void UpdatePrefsBeforeSecurityInterstitial(PrefService* prefs) { 232 void UpdatePrefsBeforeSecurityInterstitial(PrefService* prefs) {
184 // Move the user into the Scout Group if the CanShowScoutOptIn experiment is 233 // Move the user into the Scout Group if the CanShowScoutOptIn experiment is
185 // enabled. 234 // enabled.
186 if (base::FeatureList::IsEnabled(kCanShowScoutOptIn)) { 235 if (base::FeatureList::IsEnabled(kCanShowScoutOptIn)) {
187 prefs->SetBoolean(prefs::kSafeBrowsingScoutGroupSelected, true); 236 prefs->SetBoolean(prefs::kSafeBrowsingScoutGroupSelected, true);
188 } 237 }
189 } 238 }
190 239
191 } // namespace safe_browsing 240 } // namespace safe_browsing
OLDNEW
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | tools/metrics/histograms/histograms.xml » ('J')

Powered by Google App Engine
This is Rietveld 408576698