Index: chrome/browser/metrics/metrics_reporting_state.cc |
diff --git a/chrome/browser/metrics/metrics_reporting_state.cc b/chrome/browser/metrics/metrics_reporting_state.cc |
index 58f34f97938720ed7c1a65cc085d08fb7935b86f..962d37cc65f843cac7c59fbb088f86f84d965038 100644 |
--- a/chrome/browser/metrics/metrics_reporting_state.cc |
+++ b/chrome/browser/metrics/metrics_reporting_state.cc |
@@ -9,6 +9,7 @@ |
#include "build/build_config.h" |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/metrics/chrome_metrics_service_accessor.h" |
+#include "chrome/common/crash_keys.h" |
#include "chrome/common/pref_names.h" |
#include "chrome/installer/util/google_update_settings.h" |
#include "components/metrics/metrics_pref_names.h" |
@@ -60,34 +61,16 @@ bool SetGoogleUpdateSettings(bool enabled) { |
void SetMetricsReporting(bool to_update_pref, |
const OnMetricsReportingCallbackType& callback_fn, |
bool updated_pref) { |
- metrics::MetricsService* metrics = g_browser_process->metrics_service(); |
- |
#if !defined(OS_ANDROID) |
g_browser_process->local_state()->SetBoolean( |
metrics::prefs::kMetricsReportingEnabled, updated_pref); |
#endif // !defined(OS_ANDROID) |
- // Clear the client id pref when opting out. Note: Mirrors code in |
- // uma_session_stats.cc. TODO(asvitkine): Unify. |
- if (!updated_pref) { |
- // Note: Clearing client id will not affect the running state (e.g. field |
- // trial randomization), as the pref is only read on startup. |
- g_browser_process->local_state()->ClearPref( |
- metrics::prefs::kMetricsClientID); |
- g_browser_process->local_state()->ClearPref( |
- metrics::prefs::kMetricsReportingEnabledTimestamp); |
- } |
+ UpdateMetricsPrefsOnPermissionChange(updated_pref); |
// Uses the current state of whether reporting is enabled to enable services. |
g_browser_process->GetMetricsServicesManager()->UpdateUploadPermissions(true); |
- // When a user opts in to the metrics reporting service, the previously |
- // collected data should be cleared to ensure that nothing is reported before |
- // a user opts in and all reported data is accurate. |
- // TODO(asvitkine): This logic should be added to uma_session_stats.cc too. |
- if (updated_pref && metrics) |
- metrics->ClearSavedStabilityMetrics(); |
- |
if (to_update_pref == updated_pref) { |
RecordMetricsReportingHistogramValue(updated_pref ? |
METRICS_REPORTING_ENABLED : METRICS_REPORTING_DISABLED); |
@@ -138,6 +121,24 @@ void ChangeMetricsReportingStateWithReply( |
base::Bind(&SetMetricsReporting, enabled, callback_fn)); |
} |
+void UpdateMetricsPrefsOnPermissionChange(bool metrics_enabled) { |
jwd
2016/08/16 20:30:04
Didn't think to ask this in the last review, but t
Alexei Svitkine (slow)
2016/08/16 21:07:50
It's definitely a good question. There's a couple
|
+ if (metrics_enabled) { |
+ // When a user opts in to the metrics reporting service, the previously |
+ // collected data should be cleared to ensure that nothing is reported |
+ // before a user opts in and all reported data is accurate. |
+ g_browser_process->metrics_service()->ClearSavedStabilityMetrics(); |
+ } else { |
+ // Clear the client id pref when opting out. |
+ // Note: Clearing client id will not affect the running state (e.g. field |
+ // trial randomization), as the pref is only read on startup. |
+ g_browser_process->local_state()->ClearPref( |
+ metrics::prefs::kMetricsClientID); |
+ g_browser_process->local_state()->ClearPref( |
+ metrics::prefs::kMetricsReportingEnabledTimestamp); |
+ crash_keys::ClearMetricsClientId(); |
+ } |
+} |
+ |
bool IsMetricsReportingPolicyManaged() { |
const PrefService* pref_service = g_browser_process->local_state(); |
const PrefService::Preference* pref = |