| Index: chrome/browser/metrics/chrome_metrics_services_manager_client.cc
|
| diff --git a/chrome/browser/metrics/chrome_metrics_services_manager_client.cc b/chrome/browser/metrics/chrome_metrics_services_manager_client.cc
|
| index 1da42ebd9f477c754c02b237826aeb0fcf9c78bf..4f3314ed577144147e289429cbeaf34f05a79fa6 100644
|
| --- a/chrome/browser/metrics/chrome_metrics_services_manager_client.cc
|
| +++ b/chrome/browser/metrics/chrome_metrics_services_manager_client.cc
|
| @@ -33,6 +33,10 @@
|
| #include "components/crash/content/app/crashpad.h"
|
| #endif // OS_WIN
|
|
|
| +#if defined(OS_CHROMEOS)
|
| +#include "chromeos/settings/cros_settings_names.h"
|
| +#endif // defined(OS_CHROMEOS)
|
| +
|
| namespace {
|
|
|
| #if defined(OS_WIN)
|
| @@ -92,6 +96,17 @@ bool IsClientEligibleForSampling() {
|
| metrics::EnableMetricsDefault::OPT_OUT;
|
| }
|
|
|
| +#if defined(OS_CHROMEOS)
|
| +// Callback to update the metrics reporting state when the Chrome OS metrics
|
| +// reporting setting changes.
|
| +void OnCrosMetricsReportingSettingChange() {
|
| + bool enable_metrics = false;
|
| + chromeos::CrosSettings::Get()->GetBoolean(chromeos::kStatsReportingPref,
|
| + &enable_metrics);
|
| + ChangeMetricsReportingState(enable_metrics);
|
| +}
|
| +#endif
|
| +
|
| } // namespace
|
|
|
|
|
| @@ -119,7 +134,13 @@ ChromeMetricsServicesManagerClient::ChromeMetricsServicesManagerClient(
|
| local_state_(local_state) {
|
| DCHECK(local_state);
|
|
|
| - SetupMetricsStateForChromeOS();
|
| +#if defined(OS_CHROMEOS)
|
| + cros_settings_observer_ = chromeos::CrosSettings::Get()->AddSettingsObserver(
|
| + chromeos::kStatsReportingPref,
|
| + base::Bind(&OnCrosMetricsReportingSettingChange));
|
| + // Invoke the callback once initially to set the metrics reporting state.
|
| + OnCrosMetricsReportingSettingChange();
|
| +#endif
|
| }
|
|
|
| ChromeMetricsServicesManagerClient::~ChromeMetricsServicesManagerClient() {}
|
|
|