| 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..82d758bb30495378dbdd1f23b8fc8e8f68fcf172 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,10 @@ void MetricsService::PrepareInitialStabilityLog() {
|
| scoped_ptr<MetricsLog> initial_stability_log(
|
| new MetricsLog(state_manager_->client_id(), session_id_,
|
| MetricsLog::INITIAL_STABILITY_LOG));
|
| +
|
| + // Do not call NotifyOnDidCreateMetricsLog here because the stability
|
| + // log describes stats from the _previous_ session.
|
| +
|
| if (!initial_stability_log->LoadSavedEnvironmentFromPrefs())
|
| return;
|
| initial_stability_log->RecordStabilityMetrics(base::TimeDelta(),
|
| @@ -1938,3 +1960,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);
|
| +}
|
|
|