| Index: chrome/browser/metrics/metrics_service.cc
|
| diff --git a/chrome/browser/metrics/metrics_service.cc b/chrome/browser/metrics/metrics_service.cc
|
| index d27ca1b9b5631676066742327ac9ad94ac2bb06d..1fa803d45d045692a227dcf59115810ce6af2541 100644
|
| --- a/chrome/browser/metrics/metrics_service.cc
|
| +++ b/chrome/browser/metrics/metrics_service.cc
|
| @@ -1043,6 +1043,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);
|
| @@ -1076,6 +1077,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
|
|
|
| @@ -1111,6 +1128,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;
|
| @@ -1408,6 +1426,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(),
|
| @@ -1937,3 +1959,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);
|
| +}
|
|
|