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

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

Issue 253203002: Log operator code histogram on new metric log (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@api_move
Patch Set: . Created 6 years, 7 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/metrics_service.cc
diff --git a/chrome/browser/metrics/metrics_service.cc b/chrome/browser/metrics/metrics_service.cc
index 55c13212d1436296e19024622d75a1e82161f762..e3da5fe98b16f79d4a2bbfdd5f69de402b80c15b 100644
--- a/chrome/browser/metrics/metrics_service.cc
+++ b/chrome/browser/metrics/metrics_service.cc
@@ -1120,6 +1120,7 @@ void MetricsService::ReceivedProfilerData(
if (!initial_metrics_log_.get()) {
initial_metrics_log_.reset(
new MetricsLog(client_id_, session_id_, MetricsLog::ONGOING_LOG));
+ NotifyOnNewMetricsLog();
}
initial_metrics_log_->RecordProfilerData(process_data, process_type);
@@ -1206,6 +1207,22 @@ int MetricsService::GetLowEntropySource() {
return low_entropy_source_;
}
+void MetricsService::AddMetricsLogObserver(MetricsLogObserver* observer) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ metrics_log_observers_.AddObserver(observer);
+}
+
+void MetricsService::RemoveMetricsLogObserver(MetricsLogObserver* observer) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ metrics_log_observers_.RemoveObserver(observer);
bengr 2014/05/06 17:14:39 Are the observers guaranteed to outlive the Metric
bolian 2014/05/06 18:00:08 For the current usage, Yes. If not in the future,
+}
+
+void MetricsService::NotifyOnNewMetricsLog() {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ FOR_EACH_OBSERVER(
+ MetricsLogObserver, metrics_log_observers_, OnNewMetricsLog());
+}
+
// static
std::string MetricsService::GenerateClientID() {
return base::GenerateGUID();
@@ -1245,6 +1262,7 @@ void MetricsService::OpenNewLog() {
log_manager_.BeginLoggingWithLog(
new MetricsLog(client_id_, session_id_, MetricsLog::ONGOING_LOG));
+ NotifyOnNewMetricsLog();
if (state_ == INITIALIZED) {
// We only need to schedule that run once.
state_ = INIT_TASK_SCHEDULED;
@@ -1542,6 +1560,7 @@ void MetricsService::PrepareInitialStabilityLog() {
scoped_ptr<MetricsLog> initial_stability_log(
new MetricsLog(client_id_, session_id_,
MetricsLog::INITIAL_STABILITY_LOG));
+ NotifyOnNewMetricsLog();
if (!initial_stability_log->LoadSavedEnvironmentFromPrefs())
return;
initial_stability_log->RecordStabilityMetrics(base::TimeDelta(),
@@ -2082,3 +2101,19 @@ bool MetricsServiceHelper::IsCrashReportingEnabled() {
return false;
#endif
}
+
+void MetricsServiceHelper::AddMetricsLogObserver(
+ MetricsLogObserver* observer) {
+ MetricsService* metrics_service = g_browser_process->metrics_service();
+ if (metrics_service != NULL) {
bengr 2014/05/06 17:14:39 When would this be null?
bolian 2014/05/06 18:00:08 Just as a safety check before dereferring it. In t
+ metrics_service->AddMetricsLogObserver(observer);
+ }
+}
+
+void MetricsServiceHelper::RemoveMetricsLogObserver(
+ MetricsLogObserver* observer) {
+ MetricsService* metrics_service = g_browser_process->metrics_service();
+ if (metrics_service != NULL) {
+ metrics_service->RemoveMetricsLogObserver(observer);
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698