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

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

Issue 2739643003: Make Sber1/2 pref metrics into Nullable Booleans so we can track how often these prefs are unset. (Closed)
Patch Set: Created 3 years, 9 months 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
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/logging.h" 6 #include "base/logging.h"
7 #include "base/metrics/histogram_macros.h" 7 #include "base/metrics/histogram_macros.h"
8 #include "components/prefs/pref_service.h" 8 #include "components/prefs/pref_service.h"
9 #include "components/safe_browsing_db/safe_browsing_prefs.h" 9 #include "components/safe_browsing_db/safe_browsing_prefs.h"
10 10
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 // The Extended Reporting pref that is currently active, used for UMA metrics. 50 // The Extended Reporting pref that is currently active, used for UMA metrics.
51 // These values are written to logs. New enum values can be added, but 51 // These values are written to logs. New enum values can be added, but
52 // existing enums must never be renumbered or deleted and reused. 52 // existing enums must never be renumbered or deleted and reused.
53 enum ActiveExtendedReportingPref { 53 enum ActiveExtendedReportingPref {
54 SBER1_PREF = 0, 54 SBER1_PREF = 0,
55 SBER2_PREF = 1, 55 SBER2_PREF = 1,
56 // New prefs must be added before MAX_SBER_PREF 56 // New prefs must be added before MAX_SBER_PREF
57 MAX_SBER_PREF 57 MAX_SBER_PREF
58 }; 58 };
59 59
60 // A histogram for tracking a nullable boolean, which can be false, true or
61 // null. These values are written to logs. New enum values can be added, but
62 // existing enums must never be renumbered or deleted and reused.
63 enum NullableBoolean {
64 NULLABLE_BOOLEAN_FALSE = 0,
65 NULLABLE_BOOLEAN_TRUE = 1,
66 NULLABLE_BOOLEAN_NULL = 2,
67 MAX_NULLABLE_BOOLEAN
68 };
69
70 NullableBoolean GetPrefValueOrNull(const PrefService& prefs,
71 const std::string& pref_name) {
72 if (!prefs.HasPrefPath(pref_name)) {
73 return NULLABLE_BOOLEAN_NULL;
74 }
75 return prefs.GetBoolean(pref_name) ? NULLABLE_BOOLEAN_TRUE
76 : NULLABLE_BOOLEAN_FALSE;
77 }
78
60 // Update the correct UMA metric based on which pref was changed and which UI 79 // Update the correct UMA metric based on which pref was changed and which UI
61 // the change was made on. 80 // the change was made on.
62 void RecordExtendedReportingPrefChanged( 81 void RecordExtendedReportingPrefChanged(
63 const PrefService& prefs, 82 const PrefService& prefs,
64 safe_browsing::ExtendedReportingOptInLocation location) { 83 safe_browsing::ExtendedReportingOptInLocation location) {
65 bool pref_value = safe_browsing::IsExtendedReportingEnabled(prefs); 84 bool pref_value = safe_browsing::IsExtendedReportingEnabled(prefs);
Jialiu Lin 2017/03/07 18:07:12 how about IsExtendedReportingEnabled() function? M
lpz 2017/03/07 19:34:54 I'm not sure the False vs Null distinction is rele
66 85
67 if (safe_browsing::IsScout(prefs)) { 86 if (safe_browsing::IsScout(prefs)) {
68 switch (location) { 87 switch (location) {
69 case safe_browsing::SBER_OPTIN_SITE_CHROME_SETTINGS: 88 case safe_browsing::SBER_OPTIN_SITE_CHROME_SETTINGS:
70 UMA_HISTOGRAM_BOOLEAN( 89 UMA_HISTOGRAM_BOOLEAN(
71 "SafeBrowsing.Pref.Scout.SetPref.SBER2Pref.ChromeSettings", 90 "SafeBrowsing.Pref.Scout.SetPref.SBER2Pref.ChromeSettings",
72 pref_value); 91 pref_value);
73 break; 92 break;
74 case safe_browsing::SBER_OPTIN_SITE_ANDROID_SETTINGS: 93 case safe_browsing::SBER_OPTIN_SITE_ANDROID_SETTINGS:
75 UMA_HISTOGRAM_BOOLEAN( 94 UMA_HISTOGRAM_BOOLEAN(
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
272 void RecordExtendedReportingMetrics(const PrefService& prefs) { 291 void RecordExtendedReportingMetrics(const PrefService& prefs) {
273 // This metric tracks the extended browsing opt-in based on whichever setting 292 // This metric tracks the extended browsing opt-in based on whichever setting
274 // the user is currently seeing. It tells us whether extended reporting is 293 // the user is currently seeing. It tells us whether extended reporting is
275 // happening for this user. 294 // happening for this user.
276 UMA_HISTOGRAM_BOOLEAN("SafeBrowsing.Pref.Extended", 295 UMA_HISTOGRAM_BOOLEAN("SafeBrowsing.Pref.Extended",
277 IsExtendedReportingEnabled(prefs)); 296 IsExtendedReportingEnabled(prefs));
278 297
279 // These metrics track the Scout transition. 298 // These metrics track the Scout transition.
280 if (prefs.GetBoolean(prefs::kSafeBrowsingScoutGroupSelected)) { 299 if (prefs.GetBoolean(prefs::kSafeBrowsingScoutGroupSelected)) {
281 // Users in the Scout group: currently seeing the Scout opt-in. 300 // Users in the Scout group: currently seeing the Scout opt-in.
282 UMA_HISTOGRAM_BOOLEAN( 301 UMA_HISTOGRAM_ENUMERATION(
283 "SafeBrowsing.Pref.Scout.ScoutGroup.SBER1Pref", 302 "SafeBrowsing.Pref.Scout.ScoutGroup.SBER1Pref",
284 prefs.GetBoolean(prefs::kSafeBrowsingExtendedReportingEnabled)); 303 GetPrefValueOrNull(prefs, prefs::kSafeBrowsingExtendedReportingEnabled),
285 UMA_HISTOGRAM_BOOLEAN( 304 MAX_NULLABLE_BOOLEAN);
305 UMA_HISTOGRAM_ENUMERATION(
286 "SafeBrowsing.Pref.Scout.ScoutGroup.SBER2Pref", 306 "SafeBrowsing.Pref.Scout.ScoutGroup.SBER2Pref",
287 prefs.GetBoolean(prefs::kSafeBrowsingScoutReportingEnabled)); 307 GetPrefValueOrNull(prefs, prefs::kSafeBrowsingScoutReportingEnabled),
308 MAX_NULLABLE_BOOLEAN);
288 } else { 309 } else {
289 // Users not in the Scout group: currently seeing the SBER opt-in. 310 // Users not in the Scout group: currently seeing the SBER opt-in.
290 UMA_HISTOGRAM_BOOLEAN( 311 UMA_HISTOGRAM_ENUMERATION(
291 "SafeBrowsing.Pref.Scout.NoScoutGroup.SBER1Pref", 312 "SafeBrowsing.Pref.Scout.NoScoutGroup.SBER1Pref",
292 prefs.GetBoolean(prefs::kSafeBrowsingExtendedReportingEnabled)); 313 GetPrefValueOrNull(prefs, prefs::kSafeBrowsingExtendedReportingEnabled),
314 MAX_NULLABLE_BOOLEAN);
293 // The following metric is a corner case. User was previously in the 315 // The following metric is a corner case. User was previously in the
294 // Scout group and was able to opt-in to the Scout pref, but was since 316 // Scout group and was able to opt-in to the Scout pref, but was since
295 // removed from the Scout group (eg: by rolling back a Scout experiment). 317 // removed from the Scout group (eg: by rolling back a Scout experiment).
296 UMA_HISTOGRAM_BOOLEAN( 318 UMA_HISTOGRAM_ENUMERATION(
297 "SafeBrowsing.Pref.Scout.NoScoutGroup.SBER2Pref", 319 "SafeBrowsing.Pref.Scout.NoScoutGroup.SBER2Pref",
298 prefs.GetBoolean(prefs::kSafeBrowsingScoutReportingEnabled)); 320 GetPrefValueOrNull(prefs, prefs::kSafeBrowsingScoutReportingEnabled),
321 MAX_NULLABLE_BOOLEAN);
299 } 322 }
300 } 323 }
301 324
302 void SetExtendedReportingPrefAndMetric( 325 void SetExtendedReportingPrefAndMetric(
303 PrefService* prefs, 326 PrefService* prefs,
304 bool value, 327 bool value,
305 ExtendedReportingOptInLocation location) { 328 ExtendedReportingOptInLocation location) {
306 prefs->SetBoolean(GetExtendedReportingPrefName(*prefs), value); 329 prefs->SetBoolean(GetExtendedReportingPrefName(*prefs), value);
307 RecordExtendedReportingPrefChanged(*prefs, location); 330 RecordExtendedReportingPrefChanged(*prefs, location);
308 } 331 }
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 if (base::FeatureList::IsEnabled(kCanShowScoutOptIn) && 403 if (base::FeatureList::IsEnabled(kCanShowScoutOptIn) &&
381 !prefs->GetBoolean(prefs::kSafeBrowsingScoutGroupSelected)) { 404 !prefs->GetBoolean(prefs::kSafeBrowsingScoutGroupSelected)) {
382 prefs->SetBoolean(prefs::kSafeBrowsingScoutGroupSelected, true); 405 prefs->SetBoolean(prefs::kSafeBrowsingScoutGroupSelected, true);
383 UMA_HISTOGRAM_ENUMERATION(kScoutTransitionMetricName, 406 UMA_HISTOGRAM_ENUMERATION(kScoutTransitionMetricName,
384 CAN_SHOW_SCOUT_OPT_IN_SAW_FIRST_INTERSTITIAL, 407 CAN_SHOW_SCOUT_OPT_IN_SAW_FIRST_INTERSTITIAL,
385 MAX_REASONS); 408 MAX_REASONS);
386 } 409 }
387 } 410 }
388 411
389 } // namespace safe_browsing 412 } // namespace safe_browsing
OLDNEW
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698