| Index: chrome/browser/metrics/chrome_metrics_service_client.cc
|
| diff --git a/chrome/browser/metrics/chrome_metrics_service_client.cc b/chrome/browser/metrics/chrome_metrics_service_client.cc
|
| index 22aeeb2a6024694d2176f0e0bf82c8a5a90d2f1f..4dcbb75c3556267a04cd061bf58e03d12a60604a 100644
|
| --- a/chrome/browser/metrics/chrome_metrics_service_client.cc
|
| +++ b/chrome/browser/metrics/chrome_metrics_service_client.cc
|
| @@ -41,6 +41,7 @@
|
| #include "chrome/browser/profiles/profile_manager.h"
|
| #include "chrome/browser/safe_browsing/certificate_reporting_metrics_provider.h"
|
| #include "chrome/browser/sync/chrome_sync_client.h"
|
| +#include "chrome/browser/sync/profile_sync_service_factory.h"
|
| #include "chrome/browser/ui/browser_otr_state.h"
|
| #include "chrome/common/channel_info.h"
|
| #include "chrome/common/chrome_paths.h"
|
| @@ -50,6 +51,7 @@
|
| #include "chrome/common/features.h"
|
| #include "chrome/common/pref_names.h"
|
| #include "chrome/installer/util/util_constants.h"
|
| +#include "components/browser_sync/profile_sync_service.h"
|
| #include "components/browser_watcher/stability_debugging.h"
|
| #include "components/history/core/browser/history_service.h"
|
| #include "components/metrics/call_stack_profile_metrics_provider.h"
|
| @@ -895,15 +897,19 @@ void ChromeMetricsServiceClient::RegisterForNotifications() {
|
| content::NotificationService::AllBrowserContextsAndSources());
|
| for (Profile* profile :
|
| g_browser_process->profile_manager()->GetLoadedProfiles()) {
|
| - RegisterForHistoryDeletions(profile);
|
| + RegisterForProfileEvents(profile);
|
| }
|
| }
|
|
|
| -void ChromeMetricsServiceClient::RegisterForHistoryDeletions(Profile* profile) {
|
| +void ChromeMetricsServiceClient::RegisterForProfileEvents(Profile* profile) {
|
| history::HistoryService* history_service =
|
| HistoryServiceFactory::GetForProfile(profile,
|
| ServiceAccessType::IMPLICIT_ACCESS);
|
| ObserveServiceForDeletions(history_service);
|
| + browser_sync::ProfileSyncService* sync =
|
| + ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile);
|
| + if (sync)
|
| + ObserveServiceForSyncDisables(static_cast<syncer::SyncService*>(sync));
|
| }
|
|
|
| void ChromeMetricsServiceClient::Observe(
|
| @@ -925,7 +931,7 @@ void ChromeMetricsServiceClient::Observe(
|
| break;
|
|
|
| case chrome::NOTIFICATION_PROFILE_ADDED:
|
| - RegisterForHistoryDeletions(content::Source<Profile>(source).ptr());
|
| + RegisterForProfileEvents(content::Source<Profile>(source).ptr());
|
| break;
|
|
|
| default:
|
| @@ -945,3 +951,14 @@ void ChromeMetricsServiceClient::OnHistoryDeleted() {
|
| if (ukm_service_)
|
| ukm_service_->Purge();
|
| }
|
| +
|
| +void ChromeMetricsServiceClient::OnSyncPrefsChanged(bool must_purge) {
|
| + if (!ukm_service_)
|
| + return;
|
| + if (must_purge) {
|
| + ukm_service_->Purge();
|
| + ukm_service_->ResetClientId();
|
| + }
|
| + // Signal service manager to enable/disable UKM based on new state.
|
| + UpdateRunningServices();
|
| +}
|
|
|