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 f64ee5f86f4deaa9ef008a11648a61990a6815fc..44fad5949a1b78fe14d3b985fcfc4a6cf396f90d 100644 |
--- a/chrome/browser/metrics/metrics_services_manager.cc |
+++ b/chrome/browser/metrics/metrics_services_manager.cc |
@@ -18,6 +18,7 @@ |
#include "chrome/installer/util/google_update_settings.h" |
#include "components/metrics/metrics_service.h" |
#include "components/metrics/metrics_state_manager.h" |
+#include "components/rappor/rappor_pref_names.h" |
#include "components/rappor/rappor_service.h" |
#if defined(OS_CHROMEOS) |
@@ -86,6 +87,15 @@ metrics::MetricsStateManager* MetricsServicesManager::GetMetricsStateManager() { |
return metrics_state_manager_.get(); |
} |
+bool MetricsServicesManager::IsRapporEnabled() const { |
+ if (!local_state_->HasPrefPath(rappor::prefs::kRapporEnabled)) { |
+ // For upgrading users, derive a default setting from safe browsing. |
+ //bool sb_enabled = local_state_->GetBoolean(prefs::kSafeBrowsingEnabled); |
Steven Holte
2015/02/06 00:15:46
I'm not actually sure what the correct way to get
Alexei Svitkine (slow)
2015/02/06 16:43:33
Yes, prefs work everywhere. You need to call Regis
|
+ local_state_->SetBoolean(rappor::prefs::kRapporEnabled, true); |
+ } |
+ return local_state_->GetBoolean(rappor::prefs::kRapporEnabled); |
+} |
+ |
void MetricsServicesManager::UpdatePermissions(bool may_record, |
bool may_upload) { |
metrics::MetricsService* metrics = GetMetricsService(); |
@@ -114,8 +124,18 @@ void MetricsServicesManager::UpdatePermissions(bool may_record, |
metrics->Stop(); |
} |
- rappor::RecordingLevel recording_level = may_record ? |
- rappor::FINE_LEVEL : rappor::RECORDING_DISABLED; |
+ rappor::RecordingLevel recording_level = rappor::RECORDING_DISABLED; |
+#if defined(GOOGLE_CHROME_BUILD) |
+#if defined(OS_IOS) || defined(OS_ANDROID) |
+ if (may_record) { |
+ recording_level = rappor::FINE_LEVEL; |
+ } |
+#else // defined(OS_IOS) || defined(OS_ANDROID) |
+ if (IsRapporEnabled()) { |
+ recording_level = may_record ? rappor::FINE_LEVEL : rappor::COARSE_LEVEL; |
+ } |
+#endif // defined(OS_IOS) || defined(OS_ANDROID) |
+#endif // defined(GOOGLE_CHROME_BUILD) |
GetRapporService()->Update(recording_level, may_upload); |
} |