| Index: trunk/src/chrome/browser/metrics/metrics_state_manager.cc
|
| ===================================================================
|
| --- trunk/src/chrome/browser/metrics/metrics_state_manager.cc (revision 271821)
|
| +++ trunk/src/chrome/browser/metrics/metrics_state_manager.cc (working copy)
|
| @@ -19,6 +19,10 @@
|
| #include "chrome/common/pref_names.h"
|
| #include "components/variations/caching_permuted_entropy_provider.h"
|
|
|
| +#if defined(OS_CHROMEOS)
|
| +#include "chrome/browser/chromeos/settings/cros_settings.h"
|
| +#endif
|
| +
|
| namespace metrics {
|
|
|
| namespace {
|
| @@ -43,11 +47,8 @@
|
| // static
|
| bool MetricsStateManager::instance_exists_ = false;
|
|
|
| -MetricsStateManager::MetricsStateManager(
|
| - PrefService* local_state,
|
| - const base::Callback<bool(void)>& is_reporting_enabled_callback)
|
| +MetricsStateManager::MetricsStateManager(PrefService* local_state)
|
| : local_state_(local_state),
|
| - is_reporting_enabled_callback_(is_reporting_enabled_callback),
|
| low_entropy_source_(kLowEntropySourceNotSet),
|
| entropy_source_returned_(ENTROPY_SOURCE_NONE) {
|
| ResetMetricsIDsIfNecessary();
|
| @@ -64,7 +65,27 @@
|
| }
|
|
|
| bool MetricsStateManager::IsMetricsReportingEnabled() {
|
| - return is_reporting_enabled_callback_.Run();
|
| + // 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;
|
| }
|
|
|
| void MetricsStateManager::ForceClientIdCreation() {
|
| @@ -140,14 +161,11 @@
|
|
|
| // static
|
| scoped_ptr<MetricsStateManager> MetricsStateManager::Create(
|
| - PrefService* local_state,
|
| - const base::Callback<bool(void)>& is_reporting_enabled_callback) {
|
| + PrefService* local_state) {
|
| scoped_ptr<MetricsStateManager> result;
|
| // Note: |instance_exists_| is updated in the constructor and destructor.
|
| - if (!instance_exists_) {
|
| - result.reset(
|
| - new MetricsStateManager(local_state, is_reporting_enabled_callback));
|
| - }
|
| + if (!instance_exists_)
|
| + result.reset(new MetricsStateManager(local_state));
|
| return result.Pass();
|
| }
|
|
|
|
|