| Index: ios/chrome/browser/metrics/ios_chrome_metrics_service_client.mm
|
| diff --git a/ios/chrome/browser/metrics/ios_chrome_metrics_service_client.mm b/ios/chrome/browser/metrics/ios_chrome_metrics_service_client.mm
|
| index 7cbd896b6c2e829fbe680c5f6d32d8d2a23ce2a1..71d8b8098c2a5f0a6a235870314bf09d52b3c548 100644
|
| --- a/ios/chrome/browser/metrics/ios_chrome_metrics_service_client.mm
|
| +++ b/ios/chrome/browser/metrics/ios_chrome_metrics_service_client.mm
|
| @@ -20,6 +20,7 @@
|
| #include "base/rand_util.h"
|
| #include "base/strings/string16.h"
|
| #include "base/threading/platform_thread.h"
|
| +#include "components/browser_sync/profile_sync_service.h"
|
| #include "components/crash/core/common/crash_keys.h"
|
| #include "components/history/core/browser/history_service.h"
|
| #include "components/keyed_service/core/service_access_type.h"
|
| @@ -54,6 +55,7 @@
|
| #include "ios/chrome/browser/metrics/ios_chrome_stability_metrics_provider.h"
|
| #include "ios/chrome/browser/metrics/mobile_session_shutdown_metrics_provider.h"
|
| #include "ios/chrome/browser/signin/ios_chrome_signin_status_metrics_provider_delegate.h"
|
| +#include "ios/chrome/browser/sync/ios_chrome_profile_sync_service_factory.h"
|
| #include "ios/chrome/browser/sync/ios_chrome_sync_client.h"
|
| #include "ios/chrome/browser/tab_parenting_global_observer.h"
|
| #include "ios/chrome/browser/tabs/tab_model_list.h"
|
| @@ -327,16 +329,20 @@ void IOSChromeMetricsServiceClient::RegisterForNotifications() {
|
| ->GetChromeBrowserStateManager()
|
| ->GetLoadedBrowserStates();
|
| for (ios::ChromeBrowserState* browser_state : loaded_browser_states) {
|
| - RegisterForHistoryDeletions(browser_state);
|
| + RegisterForBrowserStateEvents(browser_state);
|
| }
|
| }
|
|
|
| -void IOSChromeMetricsServiceClient::RegisterForHistoryDeletions(
|
| +void IOSChromeMetricsServiceClient::RegisterForBrowserStateEvents(
|
| ios::ChromeBrowserState* browser_state) {
|
| history::HistoryService* history_service =
|
| ios::HistoryServiceFactory::GetForBrowserState(
|
| browser_state, ServiceAccessType::IMPLICIT_ACCESS);
|
| ObserveServiceForDeletions(history_service);
|
| + browser_sync::ProfileSyncService* sync =
|
| + IOSChromeProfileSyncServiceFactory::GetInstance()->GetForBrowserState(
|
| + browser_state);
|
| + ObserveServiceForSyncDisables(static_cast<syncer::SyncService*>(sync));
|
| }
|
|
|
| void IOSChromeMetricsServiceClient::OnTabParented(web::WebState* web_state) {
|
| @@ -357,3 +363,14 @@ void IOSChromeMetricsServiceClient::OnHistoryDeleted() {
|
| if (ukm_service_)
|
| ukm_service_->Purge();
|
| }
|
| +
|
| +void IOSChromeMetricsServiceClient::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();
|
| +}
|
|
|