Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(155)

Unified Diff: components/metrics_services_manager/metrics_services_manager.cc

Issue 2653693004: UKM Sync Observer (Closed)
Patch Set: Split Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/metrics_services_manager/metrics_services_manager.cc
diff --git a/components/metrics_services_manager/metrics_services_manager.cc b/components/metrics_services_manager/metrics_services_manager.cc
index e1ec65096b3e21b946d8fdb24bb489d1c3b6fc71..81c6b85866ef873cdfea5bdd006841de8930c431 100644
--- a/components/metrics_services_manager/metrics_services_manager.cc
+++ b/components/metrics_services_manager/metrics_services_manager.cc
@@ -68,14 +68,26 @@ void MetricsServicesManager::OnRendererProcessCrash() {
metrics::MetricsServiceClient*
MetricsServicesManager::GetMetricsServiceClient() {
DCHECK(thread_checker_.CalledOnValidThread());
- if (!metrics_service_client_)
+ if (!metrics_service_client_) {
metrics_service_client_ = client_->CreateMetricsServiceClient();
+ // base::Unretained is safe since |this| owns the metrics_service_client_.
+ metrics_service_client_->SetUpdateRunningServicesCallback(
+ base::Bind(&MetricsServicesManager::UpdateRunningServices,
+ base::Unretained(this)));
+ }
return metrics_service_client_.get();
}
void MetricsServicesManager::UpdatePermissions(bool may_record,
bool may_upload) {
DCHECK(thread_checker_.CalledOnValidThread());
+ // If the user has opted out of metrics, delete local UKM state.
+ if (may_record_ && !may_record) {
rkaplow 2017/02/01 16:40:55 nit - this just looks confusing. May want to renam
Steven Holte 2017/02/03 00:04:34 Done.
+ ukm::UkmService* ukm = GetUkmService();
+ if (ukm)
+ ukm->Purge();
+ }
+
// Stash the current permissions so that we can update the RapporServiceImpl
// correctly when the Rappor preference changes. The metrics recording
// preference partially determines the initial rappor setting, and also
@@ -105,11 +117,8 @@ void MetricsServicesManager::UpdateRunningServices() {
if (may_upload_) {
metrics->EnableReporting();
-#if !defined(OFFICIAL_BUILD)
- // TODO(holte): Make UKM check sync state instead of official build.
- if (ukm)
+ if (ukm && metrics_service_client_->IsHistorySyncEnabledOnAllProfiles())
ukm->EnableReporting();
-#endif
} else {
metrics->DisableReporting();
if (ukm)

Powered by Google App Engine
This is Rietveld 408576698