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 bb7b212845d05e8f610cdba1e978cb58761e1b8c..e4d23c7ee895190f1ab1b872ec25da3815c6ab48 100644 |
--- a/ios/chrome/browser/metrics/ios_chrome_metrics_service_client.mm |
+++ b/ios/chrome/browser/metrics/ios_chrome_metrics_service_client.mm |
@@ -21,6 +21,8 @@ |
#include "base/strings/string16.h" |
#include "base/threading/platform_thread.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" |
#include "components/metrics/call_stack_profile_metrics_provider.h" |
#include "components/metrics/drive_metrics_provider.h" |
#include "components/metrics/metrics_pref_names.h" |
@@ -41,11 +43,14 @@ |
#include "components/signin/core/browser/signin_status_metrics_provider.h" |
#include "components/sync/device_info/device_count_metrics_provider.h" |
#include "components/translate/core/browser/translate_ranker_metrics_provider.h" |
+#include "components/ukm/ukm_service.h" |
#include "components/variations/variations_associated_data.h" |
#include "components/version_info/version_info.h" |
#include "ios/chrome/browser/application_context.h" |
+#include "ios/chrome/browser/browser_state/chrome_browser_state_manager.h" |
#include "ios/chrome/browser/chrome_paths.h" |
#include "ios/chrome/browser/google/google_brand.h" |
+#include "ios/chrome/browser/history/history_service_factory.h" |
#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" |
@@ -91,12 +96,17 @@ void IOSChromeMetricsServiceClient::RegisterPrefs( |
metrics::MetricsService::RegisterPrefs(registry); |
metrics::StabilityMetricsHelper::RegisterPrefs(registry); |
metrics::RegisterMetricsReportingStatePrefs(registry); |
+ ukm::UkmService::RegisterPrefs(registry); |
} |
metrics::MetricsService* IOSChromeMetricsServiceClient::GetMetricsService() { |
return metrics_service_.get(); |
} |
+ukm::UkmService* IOSChromeMetricsServiceClient::GetUkmService() { |
+ return ukm_service_.get(); |
+} |
+ |
void IOSChromeMetricsServiceClient::SetMetricsClientId( |
const std::string& client_id) { |
crash_keys::SetMetricsClientIdFromGUID(client_id); |
@@ -180,8 +190,12 @@ void IOSChromeMetricsServiceClient::WebStateDidStopLoading( |
} |
void IOSChromeMetricsServiceClient::Initialize() { |
+ PrefService* local_state = GetApplicationContext()->GetLocalState(); |
metrics_service_ = base::MakeUnique<metrics::MetricsService>( |
- metrics_state_manager_, this, GetApplicationContext()->GetLocalState()); |
+ metrics_state_manager_, this, local_state); |
+ |
+ if (base::FeatureList::IsEnabled(ukm::kUkmFeature)) |
+ ukm_service_ = base::MakeUnique<ukm::UkmService>(local_state, this); |
// Register metrics providers. |
metrics_service_->RegisterMetricsProvider( |
@@ -307,6 +321,22 @@ void IOSChromeMetricsServiceClient::RegisterForNotifications() { |
OmniboxEventGlobalTracker::GetInstance()->RegisterCallback( |
base::Bind(&IOSChromeMetricsServiceClient::OnURLOpenedFromOmnibox, |
base::Unretained(this))); |
+ |
+ std::vector<ios::ChromeBrowserState*> loaded_browser_states = |
+ GetApplicationContext() |
+ ->GetChromeBrowserStateManager() |
+ ->GetLoadedBrowserStates(); |
+ for (ios::ChromeBrowserState* browser_state : loaded_browser_states) { |
+ RegisterForHistoryDeletions(browser_state); |
+ } |
+} |
+ |
+void IOSChromeMetricsServiceClient::RegisterForHistoryDeletions( |
+ ios::ChromeBrowserState* browser_state) { |
+ history::HistoryService* history_service = |
+ ios::HistoryServiceFactory::GetForBrowserState( |
+ browser_state, ServiceAccessType::IMPLICIT_ACCESS); |
+ ObserveServiceForDeletions(history_service); |
} |
void IOSChromeMetricsServiceClient::OnTabParented(web::WebState* web_state) { |
@@ -322,3 +352,8 @@ IOSChromeMetricsServiceClient::GetMetricsReportingDefaultState() { |
return metrics::GetMetricsReportingDefaultState( |
GetApplicationContext()->GetLocalState()); |
} |
+ |
+void IOSChromeMetricsServiceClient::OnHistoryDeleted() { |
+ if (ukm_service_) |
+ ukm_service_->Purge(); |
+} |