Chromium Code Reviews| Index: components/metrics/metrics_service.cc |
| diff --git a/components/metrics/metrics_service.cc b/components/metrics/metrics_service.cc |
| index f489d16019e897f326b09e2effe5c263ffd1a411..301e9bb7dcc2c18f6f9f01c203568e294842253f 100644 |
| --- a/components/metrics/metrics_service.cc |
| +++ b/components/metrics/metrics_service.cc |
| @@ -625,6 +625,12 @@ void MetricsService::OpenNewLog() { |
| FROM_HERE, base::Bind(&MetricsService::StartInitTask, |
| self_ptr_factory_.GetWeakPtr()), |
| base::TimeDelta::FromSeconds(kInitializationDelaySeconds)); |
| + |
| + base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
|
Alexei Svitkine (slow)
2017/06/08 23:59:30
Please use the new post task APIs in base please.
bcwhite
2017/06/09 15:09:27
That API runs tasks on threads it owns rather than
|
| + FROM_HERE, |
| + base::Bind(&MetricsService::RecordIndependentHistogramJob, |
| + self_ptr_factory_.GetWeakPtr()), |
| + base::TimeDelta::FromSeconds(2 * kInitializationDelaySeconds)); |
| } |
| } |
| @@ -971,6 +977,29 @@ void MetricsService::RecordCurrentStabilityHistograms() { |
| provider->RecordInitialHistogramSnapshots(&histogram_snapshot_manager_); |
| } |
| +bool MetricsService::RecordIndependentHistogramLog() { |
|
Alexei Svitkine (slow)
2017/06/08 23:59:30
Nit: Add thread_checker_ tests here and below.
bcwhite
2017/06/09 15:09:27
Done.
|
| + std::unique_ptr<MetricsLog> log = CreateLog(MetricsLog::INDEPENDENT_LOG); |
|
Alexei Svitkine (slow)
2017/06/08 23:59:31
CreateLog() uses session_id_ but this is not corre
bcwhite
2017/06/09 15:09:27
Done.
|
| + for (auto& provider : metrics_providers_) { |
| + if (log->LoadIndependentMetrics(provider.get())) { |
| + log_manager_.PauseCurrentLog(); |
| + log_manager_.BeginLoggingWithLog(std::move(log)); |
| + log_manager_.FinishCurrentLog(log_store()); |
| + log_manager_.ResumePausedLog(); |
| + return true; |
| + } |
| + } |
| + return false; |
| +} |
| + |
| +void MetricsService::RecordIndependentHistogramJob() { |
| + bool found = RecordIndependentHistogramLog(); |
| + base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| + FROM_HERE, |
| + base::Bind(&MetricsService::RecordIndependentHistogramJob, |
| + self_ptr_factory_.GetWeakPtr()), |
| + base::TimeDelta::FromSeconds(found ? 5 : 900)); |
|
Alexei Svitkine (slow)
2017/06/08 23:59:30
Nit: instead FromMinutes(15) and move the found to
bcwhite
2017/06/09 15:09:27
Done.
|
| +} |
| + |
| void MetricsService::LogCleanShutdown(bool end_completed) { |
| DCHECK(thread_checker_.CalledOnValidThread()); |
| // Redundant setting to assure that we always reset this value at shutdown |