Chromium Code Reviews| Index: chrome/browser/metrics/metrics_service.cc |
| diff --git a/chrome/browser/metrics/metrics_service.cc b/chrome/browser/metrics/metrics_service.cc |
| index 8f56fa16d01e8be32eb1e67b50c9c37edd69e9c6..0de860cb2b057c52f27fac1062825a911925dca0 100644 |
| --- a/chrome/browser/metrics/metrics_service.cc |
| +++ b/chrome/browser/metrics/metrics_service.cc |
| @@ -1044,6 +1044,7 @@ void MetricsService::ReceivedProfilerData( |
| initial_metrics_log_.reset( |
| new MetricsLog(state_manager_->client_id(), session_id_, |
| MetricsLog::ONGOING_LOG)); |
| + NotifyOnDidCreateMetricsLog(); |
| } |
| initial_metrics_log_->RecordProfilerData(process_data, process_type); |
| @@ -1077,6 +1078,22 @@ void MetricsService::GetUptimes(PrefService* pref, |
| } |
| } |
| +void MetricsService::AddObserver(MetricsServiceObserver* observer) { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + observers_.AddObserver(observer); |
| +} |
| + |
| +void MetricsService::RemoveObserver(MetricsServiceObserver* observer) { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + observers_.RemoveObserver(observer); |
| +} |
| + |
| +void MetricsService::NotifyOnDidCreateMetricsLog() { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + FOR_EACH_OBSERVER( |
| + MetricsServiceObserver, observers_, OnDidCreateMetricsLog()); |
| +} |
| + |
| //------------------------------------------------------------------------------ |
| // State save methods |
| @@ -1112,6 +1129,7 @@ void MetricsService::OpenNewLog() { |
| log_manager_.BeginLoggingWithLog( |
| new MetricsLog(state_manager_->client_id(), session_id_, |
| MetricsLog::ONGOING_LOG)); |
| + NotifyOnDidCreateMetricsLog(); |
| if (state_ == INITIALIZED) { |
| // We only need to schedule that run once. |
| state_ = INIT_TASK_SCHEDULED; |
| @@ -1409,6 +1427,7 @@ void MetricsService::PrepareInitialStabilityLog() { |
| scoped_ptr<MetricsLog> initial_stability_log( |
| new MetricsLog(state_manager_->client_id(), session_id_, |
| MetricsLog::INITIAL_STABILITY_LOG)); |
| + NotifyOnDidCreateMetricsLog(); |
|
Alexei Svitkine (slow)
2014/05/08 21:00:56
Remove this line. Possibly replace with a comment.
bolian
2014/05/08 22:17:57
Done.
|
| if (!initial_stability_log->LoadSavedEnvironmentFromPrefs()) |
| return; |
| initial_stability_log->RecordStabilityMetrics(base::TimeDelta(), |
| @@ -1938,3 +1957,17 @@ bool MetricsServiceHelper::IsCrashReportingEnabled() { |
| return false; |
| #endif |
| } |
| + |
| +void MetricsServiceHelper::AddMetricsServiceObserver( |
| + MetricsServiceObserver* observer) { |
| + MetricsService* metrics_service = g_browser_process->metrics_service(); |
| + if (metrics_service) |
| + metrics_service->AddObserver(observer); |
| +} |
| + |
| +void MetricsServiceHelper::RemoveMetricsServiceObserver( |
| + MetricsServiceObserver* observer) { |
| + MetricsService* metrics_service = g_browser_process->metrics_service(); |
| + if (metrics_service) |
| + metrics_service->RemoveObserver(observer); |
| +} |