| Index: chrome/browser/metrics/metrics_services_manager.cc
|
| diff --git a/chrome/browser/metrics/metrics_services_manager.cc b/chrome/browser/metrics/metrics_services_manager.cc
|
| index 53acd977e231390c84665ad5ff32236bf15aed6d..b471d9cc18966628916a8a43a41d15323e4ffca2 100644
|
| --- a/chrome/browser/metrics/metrics_services_manager.cc
|
| +++ b/chrome/browser/metrics/metrics_services_manager.cc
|
| @@ -58,8 +58,14 @@ void PostStoreMetricsClientInfo(const metrics::ClientInfo& client_info) {
|
| } // namespace
|
|
|
| MetricsServicesManager::MetricsServicesManager(PrefService* local_state)
|
| - : local_state_(local_state) {
|
| + : local_state_(local_state),
|
| + may_upload_(false),
|
| + may_record_(false) {
|
| DCHECK(local_state);
|
| + pref_change_registrar_.Init(local_state);
|
| + pref_change_registrar_.Add(rappor::prefs::kRapporEnabled,
|
| + base::Bind(&MetricsServicesManager::UpdateRapporService,
|
| + base::Unretained(this)));
|
| }
|
|
|
| MetricsServicesManager::~MetricsServicesManager() {
|
| @@ -144,8 +150,19 @@ rappor::RecordingLevel MetricsServicesManager::GetRapporRecordingLevel(
|
| return recording_level;
|
| }
|
|
|
| +void MetricsServicesManager::UpdateRapporService() {
|
| + GetRapporService()->Update(GetRapporRecordingLevel(may_record_), may_upload_);
|
| +}
|
| +
|
| void MetricsServicesManager::UpdatePermissions(bool may_record,
|
| bool may_upload) {
|
| + // Stash the current permissions so that we can update the RapporService
|
| + // correctly when the Rappor preference changes. The metrics recording
|
| + // preference partially determines the initial rappor setting, and also
|
| + // controls whether FINE metrics are sent.
|
| + may_record_ = may_record;
|
| + may_upload_ = may_upload;
|
| +
|
| metrics::MetricsService* metrics = GetMetricsService();
|
|
|
| const base::CommandLine* cmdline = base::CommandLine::ForCurrentProcess();
|
| @@ -172,7 +189,7 @@ void MetricsServicesManager::UpdatePermissions(bool may_record,
|
| metrics->Stop();
|
| }
|
|
|
| - GetRapporService()->Update(GetRapporRecordingLevel(may_record), may_upload);
|
| + UpdateRapporService();
|
| }
|
|
|
| void MetricsServicesManager::UpdateUploadPermissions(bool may_upload) {
|
|
|