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

Unified Diff: chrome/browser/metrics/chrome_metrics_service_client.cc

Issue 2567263003: Basic UkmService implementation (Closed)
Patch Set: Rebase 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: 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 1dfb2f09c40be76367c003161ac05f2750e2f1d8..d2aa299b7f225966f0a7c11a57fc9ecc301dcce2 100644
--- a/chrome/browser/metrics/chrome_metrics_service_client.cc
+++ b/chrome/browser/metrics/chrome_metrics_service_client.cc
@@ -6,6 +6,7 @@
#include <stddef.h>
+#include <set>
#include <utility>
#include <vector>
@@ -28,6 +29,7 @@
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/google/google_brand.h"
+#include "chrome/browser/history/history_service_factory.h"
#include "chrome/browser/metrics/chrome_metrics_service_accessor.h"
#include "chrome/browser/metrics/chrome_stability_metrics_provider.h"
#include "chrome/browser/metrics/https_engagement_metrics_provider.h"
@@ -35,6 +37,7 @@
#include "chrome/browser/metrics/network_quality_estimator_provider_impl.h"
#include "chrome/browser/metrics/sampling_metrics_provider.h"
#include "chrome/browser/metrics/subprocess_metrics_provider.h"
+#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/ui/browser_otr_state.h"
@@ -47,6 +50,7 @@
#include "chrome/common/pref_names.h"
#include "chrome/installer/util/util_constants.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"
#include "components/metrics/drive_metrics_provider.h"
#include "components/metrics/file_metrics_provider.h"
@@ -70,6 +74,7 @@
#include "components/prefs/pref_service.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/version_info/version_info.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/histogram_fetcher.h"
@@ -318,6 +323,7 @@ std::unique_ptr<ChromeMetricsServiceClient> ChromeMetricsServiceClient::Create(
// static
void ChromeMetricsServiceClient::RegisterPrefs(PrefRegistrySimple* registry) {
metrics::MetricsService::RegisterPrefs(registry);
+ ukm::UkmService::RegisterPrefs(registry);
metrics::StabilityMetricsHelper::RegisterPrefs(registry);
RegisterFileMetricsPreferences(registry);
@@ -337,6 +343,10 @@ metrics::MetricsService* ChromeMetricsServiceClient::GetMetricsService() {
return metrics_service_.get();
}
+ukm::UkmService* ChromeMetricsServiceClient::GetUkmService() {
+ return ukm_service_.get();
+}
+
void ChromeMetricsServiceClient::SetMetricsClientId(
const std::string& client_id) {
crash_keys::SetMetricsClientIdFromGUID(client_id);
@@ -553,6 +563,9 @@ void ChromeMetricsServiceClient::Initialize() {
metrics_service_.reset(
new metrics::MetricsService(metrics_state_manager_, this, local_state));
+ if (base::FeatureList::IsEnabled(ukm::kUkmFeature))
+ ukm_service_.reset(new ukm::UkmService(local_state, this));
+
// Gets access to persistent metrics shared by sub-processes.
metrics_service_->RegisterMetricsProvider(
std::unique_ptr<metrics::MetricsProvider>(
@@ -864,6 +877,21 @@ void ChromeMetricsServiceClient::RegisterForNotifications() {
OmniboxEventGlobalTracker::GetInstance()->RegisterCallback(
base::Bind(&ChromeMetricsServiceClient::OnURLOpenedFromOmnibox,
base::Unretained(this)));
+
+ // Observe history deletions for all profiles.
+ registrar_.Add(this, chrome::NOTIFICATION_PROFILE_ADDED,
+ content::NotificationService::AllBrowserContextsAndSources());
+ for (Profile* profile :
+ g_browser_process->profile_manager()->GetLoadedProfiles()) {
+ RegisterForHistoryDeletions(profile);
+ }
+}
+
+void ChromeMetricsServiceClient::RegisterForHistoryDeletions(Profile* profile) {
+ history::HistoryService* history_service =
+ HistoryServiceFactory::GetForProfile(profile,
+ ServiceAccessType::IMPLICIT_ACCESS);
+ ObserveServiceForDeletions(history_service);
}
void ChromeMetricsServiceClient::Observe(
@@ -884,6 +912,10 @@ void ChromeMetricsServiceClient::Observe(
metrics_service_->OnApplicationNotIdle();
break;
+ case chrome::NOTIFICATION_PROFILE_ADDED:
+ RegisterForHistoryDeletions(content::Source<Profile>(source).ptr());
+ break;
+
default:
NOTREACHED();
}
@@ -896,3 +928,8 @@ void ChromeMetricsServiceClient::OnURLOpenedFromOmnibox(OmniboxLog* log) {
bool ChromeMetricsServiceClient::IsUMACellularUploadLogicEnabled() {
return metrics::IsCellularLogicEnabled();
}
+
+void ChromeMetricsServiceClient::OnHistoryDeleted() {
+ if (ukm_service_)
+ ukm_service_->Purge();
+}

Powered by Google App Engine
This is Rietveld 408576698