| Index: components/browser_watcher/watcher_metrics_provider_win.cc
 | 
| diff --git a/components/browser_watcher/watcher_metrics_provider_win.cc b/components/browser_watcher/watcher_metrics_provider_win.cc
 | 
| index dcd7881010eb22f203e4b27eaa5dc58d597c206d..706d1639870c5d3ef8f16d068e7c9c2c9da0a20d 100644
 | 
| --- a/components/browser_watcher/watcher_metrics_provider_win.cc
 | 
| +++ b/components/browser_watcher/watcher_metrics_provider_win.cc
 | 
| @@ -23,6 +23,8 @@
 | 
|  #include "base/strings/string_number_conversions.h"
 | 
|  #include "base/strings/string_piece.h"
 | 
|  #include "base/strings/utf_string_conversions.h"
 | 
| +#include "base/task_scheduler/post_task.h"
 | 
| +#include "base/task_scheduler/task_traits.h"
 | 
|  #include "base/win/registry.h"
 | 
|  #include "components/browser_watcher/features.h"
 | 
|  #include "components/browser_watcher/postmortem_report_collector.h"
 | 
| @@ -162,6 +164,14 @@ void LogCollectionInitStatus(CollectionInitializationStatus status) {
 | 
|                              INIT_STATUS_MAX);
 | 
|  }
 | 
|  
 | 
| +// Returns a task runner appropriate for running background tasks that perform
 | 
| +// file I/O.
 | 
| +scoped_refptr<TaskRunner> CreateBackgroundTaskRunner() {
 | 
| +  return base::CreateSequencedTaskRunnerWithTraits(
 | 
| +      {base::MayBlock(), base::TaskPriority::BACKGROUND,
 | 
| +       base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN});
 | 
| +}
 | 
| +
 | 
|  }  // namespace
 | 
|  
 | 
|  const char WatcherMetricsProviderWin::kBrowserExitCodeHistogramName[] =
 | 
| @@ -171,18 +181,14 @@ WatcherMetricsProviderWin::WatcherMetricsProviderWin(
 | 
|      const base::string16& registry_path,
 | 
|      const base::FilePath& user_data_dir,
 | 
|      const base::FilePath& crash_dir,
 | 
| -    const GetExecutableDetailsCallback& exe_details_cb,
 | 
| -    base::TaskRunner* io_task_runner)
 | 
| +    const GetExecutableDetailsCallback& exe_details_cb)
 | 
|      : recording_enabled_(false),
 | 
|        cleanup_scheduled_(false),
 | 
|        registry_path_(registry_path),
 | 
|        user_data_dir_(user_data_dir),
 | 
|        crash_dir_(crash_dir),
 | 
|        exe_details_cb_(exe_details_cb),
 | 
| -      io_task_runner_(io_task_runner),
 | 
| -      weak_ptr_factory_(this) {
 | 
| -  DCHECK(io_task_runner_);
 | 
| -}
 | 
| +      weak_ptr_factory_(this) {}
 | 
|  
 | 
|  WatcherMetricsProviderWin::~WatcherMetricsProviderWin() {
 | 
|  }
 | 
| @@ -196,8 +202,8 @@ void WatcherMetricsProviderWin::OnRecordingDisabled() {
 | 
|      // When metrics reporting is disabled, the providers get an
 | 
|      // OnRecordingDisabled notification at startup. Use that first notification
 | 
|      // to issue the cleanup task.
 | 
| -    io_task_runner_->PostTask(
 | 
| -        FROM_HERE, base::Bind(&DeleteExitCodeRegistryKey, registry_path_));
 | 
| +    task_runner_->PostTask(
 | 
| +        FROM_HERE, base::BindOnce(&DeleteExitCodeRegistryKey, registry_path_));
 | 
|  
 | 
|      cleanup_scheduled_ = true;
 | 
|    }
 | 
| @@ -216,17 +222,16 @@ void WatcherMetricsProviderWin::ProvideStabilityMetrics(
 | 
|  
 | 
|  void WatcherMetricsProviderWin::CollectPostmortemReports(
 | 
|      const base::Closure& done_callback) {
 | 
| -  io_task_runner_->PostTaskAndReply(
 | 
| +  task_runner_->PostTaskAndReply(
 | 
|        FROM_HERE,
 | 
| -      base::Bind(
 | 
| -          &WatcherMetricsProviderWin::CollectPostmortemReportsOnBlockingPool,
 | 
| -          weak_ptr_factory_.GetWeakPtr()),
 | 
| +      base::BindOnce(&WatcherMetricsProviderWin::CollectPostmortemReportsImpl,
 | 
| +                     weak_ptr_factory_.GetWeakPtr()),
 | 
|        done_callback);
 | 
|  }
 | 
|  
 | 
|  // TODO(manzagop): consider mechanisms for partial collection if this is to be
 | 
|  //     used on a critical path.
 | 
| -void WatcherMetricsProviderWin::CollectPostmortemReportsOnBlockingPool() {
 | 
| +void WatcherMetricsProviderWin::CollectPostmortemReportsImpl() {
 | 
|    SCOPED_UMA_HISTOGRAM_TIMER("ActivityTracker.Collect.TotalTime");
 | 
|  
 | 
|    bool is_stability_debugging_on =
 | 
| 
 |