| Index: chrome/browser/metrics/metrics_state_manager.cc
|
| diff --git a/chrome/browser/metrics/metrics_state_manager.cc b/chrome/browser/metrics/metrics_state_manager.cc
|
| index 5242a23d34c19237f09719fc5a4de41966d415df..75ce791ae47b283826872f3f61e2a32e9e3467c1 100644
|
| --- a/chrome/browser/metrics/metrics_state_manager.cc
|
| +++ b/chrome/browser/metrics/metrics_state_manager.cc
|
| @@ -47,8 +47,11 @@ int GenerateLowEntropySource() {
|
| // static
|
| bool MetricsStateManager::instance_exists_ = false;
|
|
|
| -MetricsStateManager::MetricsStateManager(PrefService* local_state)
|
| +MetricsStateManager::MetricsStateManager(
|
| + PrefService* local_state,
|
| + const base::Callback<bool(void)>& is_reporting_enabled_callback)
|
| : local_state_(local_state),
|
| + is_reporting_enabled_callback_(is_reporting_enabled_callback),
|
| low_entropy_source_(kLowEntropySourceNotSet),
|
| entropy_source_returned_(ENTROPY_SOURCE_NONE) {
|
| ResetMetricsIDsIfNecessary();
|
| @@ -65,27 +68,7 @@ MetricsStateManager::~MetricsStateManager() {
|
| }
|
|
|
| bool MetricsStateManager::IsMetricsReportingEnabled() {
|
| - // If the user permits metrics reporting with the checkbox in the
|
| - // prefs, we turn on recording. We disable metrics completely for
|
| - // non-official builds. This can be forced with a flag.
|
| - const CommandLine* command_line = CommandLine::ForCurrentProcess();
|
| - if (command_line->HasSwitch(switches::kEnableMetricsReportingForTesting))
|
| - return true;
|
| -
|
| - // Disable metrics reporting when field trials are forced.
|
| - if (command_line->HasSwitch(switches::kForceFieldTrials))
|
| - return false;
|
| -
|
| - bool enabled = false;
|
| -#if defined(GOOGLE_CHROME_BUILD)
|
| -#if defined(OS_CHROMEOS)
|
| - chromeos::CrosSettings::Get()->GetBoolean(chromeos::kStatsReportingPref,
|
| - &enabled);
|
| -#else
|
| - enabled = local_state_->GetBoolean(prefs::kMetricsReportingEnabled);
|
| -#endif // #if defined(OS_CHROMEOS)
|
| -#endif // defined(GOOGLE_CHROME_BUILD)
|
| - return enabled;
|
| + return is_reporting_enabled_callback_.Run();
|
| }
|
|
|
| void MetricsStateManager::ForceClientIdCreation() {
|
| @@ -160,11 +143,14 @@ MetricsStateManager::CreateEntropyProvider() {
|
|
|
| // static
|
| scoped_ptr<MetricsStateManager> MetricsStateManager::Create(
|
| - PrefService* local_state) {
|
| + PrefService* local_state,
|
| + const base::Callback<bool(void)>& is_reporting_enabled_callback) {
|
| scoped_ptr<MetricsStateManager> result;
|
| // Note: |instance_exists_| is updated in the constructor and destructor.
|
| - if (!instance_exists_)
|
| - result.reset(new MetricsStateManager(local_state));
|
| + if (!instance_exists_) {
|
| + result.reset(
|
| + new MetricsStateManager(local_state, is_reporting_enabled_callback));
|
| + }
|
| return result.Pass();
|
| }
|
|
|
|
|