| Index: content/renderer/render_process_impl.cc
 | 
| diff --git a/content/renderer/render_process_impl.cc b/content/renderer/render_process_impl.cc
 | 
| index 1757c53640b5a6042d88161711867d84edadb59e..ebbdefa5ea4321c794684d9c2312258b66c27224 100644
 | 
| --- a/content/renderer/render_process_impl.cc
 | 
| +++ b/content/renderer/render_process_impl.cc
 | 
| @@ -25,8 +25,6 @@
 | 
|  #include "base/memory/ptr_util.h"
 | 
|  #include "base/sys_info.h"
 | 
|  #include "base/task_scheduler/initialization_util.h"
 | 
| -#include "base/task_scheduler/task_traits.h"
 | 
| -#include "base/threading/platform_thread.h"
 | 
|  #include "base/time/time.h"
 | 
|  #include "content/child/site_isolation_stats_gatherer.h"
 | 
|  #include "content/public/common/bindings_policy.h"
 | 
| @@ -43,14 +41,6 @@
 | 
|  
 | 
|  namespace {
 | 
|  
 | 
| -enum WorkerPoolType : size_t {
 | 
| -  BACKGROUND = 0,
 | 
| -  BACKGROUND_BLOCKING,
 | 
| -  FOREGROUND,
 | 
| -  FOREGROUND_BLOCKING,
 | 
| -  WORKER_POOL_COUNT  // Always last.
 | 
| -};
 | 
| -
 | 
|  const base::Feature kV8_ES2015_TailCalls_Feature {
 | 
|    "V8_ES2015_TailCalls", base::FEATURE_DISABLED_BY_DEFAULT
 | 
|  };
 | 
| @@ -82,49 +72,32 @@ void SetV8FlagIfHasSwitch(const char* switch_name, const char* v8_flag) {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -std::vector<base::SchedulerWorkerPoolParams>
 | 
| -GetDefaultSchedulerWorkerPoolParams() {
 | 
| +std::unique_ptr<base::TaskScheduler::InitParams>
 | 
| +GetDefaultTaskSchedulerInitParams() {
 | 
|    using StandbyThreadPolicy =
 | 
|        base::SchedulerWorkerPoolParams::StandbyThreadPolicy;
 | 
| -  using ThreadPriority = base::ThreadPriority;
 | 
| +
 | 
|    constexpr int kMaxNumThreadsInBackgroundPool = 1;
 | 
|    constexpr int kMaxNumThreadsInBackgroundBlockingPool = 1;
 | 
|    constexpr int kMaxNumThreadsInForegroundPoolLowerBound = 2;
 | 
|    constexpr int kMaxNumThreadsInForegroundBlockingPool = 1;
 | 
|    constexpr auto kSuggestedReclaimTime = base::TimeDelta::FromSeconds(30);
 | 
|  
 | 
| -  std::vector<base::SchedulerWorkerPoolParams> params_vector;
 | 
| -  params_vector.emplace_back("RendererBackground", ThreadPriority::BACKGROUND,
 | 
| -                             StandbyThreadPolicy::LAZY,
 | 
| -                             kMaxNumThreadsInBackgroundPool,
 | 
| -                             kSuggestedReclaimTime);
 | 
| -  params_vector.emplace_back(
 | 
| -      "RendererBackgroundBlocking", ThreadPriority::BACKGROUND,
 | 
| -      StandbyThreadPolicy::LAZY, kMaxNumThreadsInBackgroundBlockingPool,
 | 
| -      kSuggestedReclaimTime);
 | 
| -  params_vector.emplace_back("RendererForeground", ThreadPriority::NORMAL,
 | 
| -                             StandbyThreadPolicy::LAZY,
 | 
| -                             std::max(kMaxNumThreadsInForegroundPoolLowerBound,
 | 
| -                                      base::SysInfo::NumberOfProcessors()),
 | 
| -                             kSuggestedReclaimTime);
 | 
| -  params_vector.emplace_back("RendererForegroundBlocking",
 | 
| -                             ThreadPriority::NORMAL, StandbyThreadPolicy::LAZY,
 | 
| -                             kMaxNumThreadsInForegroundBlockingPool,
 | 
| -                             kSuggestedReclaimTime);
 | 
| -  DCHECK_EQ(WORKER_POOL_COUNT, params_vector.size());
 | 
| -  return params_vector;
 | 
| -}
 | 
| -
 | 
| -// Returns the worker pool index for |traits| defaulting to FOREGROUND or
 | 
| -// FOREGROUND_BLOCKING on any other priorities based off of worker pools defined
 | 
| -// in GetDefaultSchedulerWorkerPoolParams().
 | 
| -size_t DefaultRendererWorkerPoolIndexForTraits(const base::TaskTraits& traits) {
 | 
| -  const bool is_background =
 | 
| -      traits.priority() == base::TaskPriority::BACKGROUND;
 | 
| -  if (traits.may_block() || traits.with_base_sync_primitives())
 | 
| -    return is_background ? BACKGROUND_BLOCKING : FOREGROUND_BLOCKING;
 | 
| -
 | 
| -  return is_background ? BACKGROUND : FOREGROUND;
 | 
| +  return base::MakeUnique<base::TaskScheduler::InitParams>(
 | 
| +      base::SchedulerWorkerPoolParams(StandbyThreadPolicy::LAZY,
 | 
| +                                      kMaxNumThreadsInBackgroundPool,
 | 
| +                                      kSuggestedReclaimTime),
 | 
| +      base::SchedulerWorkerPoolParams(StandbyThreadPolicy::LAZY,
 | 
| +                                      kMaxNumThreadsInBackgroundBlockingPool,
 | 
| +                                      kSuggestedReclaimTime),
 | 
| +      base::SchedulerWorkerPoolParams(
 | 
| +          StandbyThreadPolicy::LAZY,
 | 
| +          std::max(kMaxNumThreadsInForegroundPoolLowerBound,
 | 
| +                   base::SysInfo::NumberOfProcessors()),
 | 
| +          kSuggestedReclaimTime),
 | 
| +      base::SchedulerWorkerPoolParams(StandbyThreadPolicy::LAZY,
 | 
| +                                      kMaxNumThreadsInForegroundBlockingPool,
 | 
| +                                      kSuggestedReclaimTime));
 | 
|  }
 | 
|  
 | 
|  }  // namespace
 | 
| @@ -132,11 +105,8 @@ size_t DefaultRendererWorkerPoolIndexForTraits(const base::TaskTraits& traits) {
 | 
|  namespace content {
 | 
|  
 | 
|  RenderProcessImpl::RenderProcessImpl(
 | 
| -    const std::vector<base::SchedulerWorkerPoolParams>& worker_pool_params,
 | 
| -    base::TaskScheduler::WorkerPoolIndexForTraitsCallback
 | 
| -        worker_pool_index_for_traits_callback)
 | 
| -    : RenderProcess(worker_pool_params,
 | 
| -                    std::move(worker_pool_index_for_traits_callback)),
 | 
| +    std::unique_ptr<base::TaskScheduler::InitParams> task_scheduler_init_params)
 | 
| +    : RenderProcess("Renderer", std::move(task_scheduler_init_params)),
 | 
|        enabled_bindings_(0) {
 | 
|  #if defined(OS_WIN)
 | 
|    // HACK:  See http://b/issue?id=1024307 for rationale.
 | 
| @@ -204,24 +174,13 @@ RenderProcessImpl::~RenderProcessImpl() {
 | 
|  }
 | 
|  
 | 
|  std::unique_ptr<RenderProcess> RenderProcessImpl::Create() {
 | 
| -  std::vector<base::SchedulerWorkerPoolParams> worker_pool_params_vector;
 | 
| -  base::TaskScheduler::WorkerPoolIndexForTraitsCallback
 | 
| -      worker_pool_index_for_traits_callback;
 | 
| -  content::GetContentClient()->renderer()->GetTaskSchedulerInitializationParams(
 | 
| -      &worker_pool_params_vector, &worker_pool_index_for_traits_callback);
 | 
| -
 | 
| -  if (worker_pool_params_vector.empty()) {
 | 
| -    worker_pool_params_vector = GetDefaultSchedulerWorkerPoolParams();
 | 
| -    worker_pool_index_for_traits_callback =
 | 
| -        base::Bind(&DefaultRendererWorkerPoolIndexForTraits);
 | 
| -  }
 | 
| -
 | 
| -  DCHECK(!worker_pool_params_vector.empty());
 | 
| -  DCHECK(worker_pool_index_for_traits_callback);
 | 
| +  auto task_scheduler_init_params =
 | 
| +      content::GetContentClient()->renderer()->GetTaskSchedulerInitParams();
 | 
| +  if (!task_scheduler_init_params)
 | 
| +    task_scheduler_init_params = GetDefaultTaskSchedulerInitParams();
 | 
|  
 | 
|    return base::WrapUnique(
 | 
| -      new RenderProcessImpl(worker_pool_params_vector,
 | 
| -                            std::move(worker_pool_index_for_traits_callback)));
 | 
| +      new RenderProcessImpl(std::move(task_scheduler_init_params)));
 | 
|  }
 | 
|  
 | 
|  void RenderProcessImpl::AddBindings(int bindings) {
 | 
| 
 |