| Index: content/browser/browser_main_loop.cc
|
| diff --git a/content/browser/browser_main_loop.cc b/content/browser/browser_main_loop.cc
|
| index d48bc01b8df6da132fb0a4ba83b5a05ffb686cc2..d9b3e395c3384e6a2e3275ef066fbc1830523db1 100644
|
| --- a/content/browser/browser_main_loop.cc
|
| +++ b/content/browser/browser_main_loop.cc
|
| @@ -34,7 +34,6 @@
|
| #include "base/system_monitor/system_monitor.h"
|
| #include "base/task_scheduler/initialization_util.h"
|
| #include "base/task_scheduler/post_task.h"
|
| -#include "base/task_scheduler/scheduler_worker_pool_params.h"
|
| #include "base/task_scheduler/task_scheduler.h"
|
| #include "base/task_scheduler/task_traits.h"
|
| #include "base/threading/sequenced_worker_pool.h"
|
| @@ -396,67 +395,51 @@ enum WorkerPoolType : size_t {
|
| WORKER_POOL_COUNT // Always last.
|
| };
|
|
|
| -std::vector<base::SchedulerWorkerPoolParams>
|
| -GetDefaultSchedulerWorkerPoolParams() {
|
| +std::unique_ptr<base::TaskScheduler::InitParams>
|
| +GetDefaultTaskSchedulerInitParams() {
|
| using StandbyThreadPolicy =
|
| base::SchedulerWorkerPoolParams::StandbyThreadPolicy;
|
| - using ThreadPriority = base::ThreadPriority;
|
| - std::vector<base::SchedulerWorkerPoolParams> params_vector;
|
| #if defined(OS_ANDROID)
|
| - params_vector.emplace_back(
|
| - "Background", ThreadPriority::BACKGROUND, StandbyThreadPolicy::ONE,
|
| - base::RecommendedMaxNumberOfThreadsInPool(2, 8, 0.1, 0),
|
| - base::TimeDelta::FromSeconds(30));
|
| - params_vector.emplace_back(
|
| - "BackgroundBlocking", ThreadPriority::BACKGROUND,
|
| - StandbyThreadPolicy::ONE,
|
| - base::RecommendedMaxNumberOfThreadsInPool(2, 8, 0.1, 0),
|
| - base::TimeDelta::FromSeconds(30));
|
| - params_vector.emplace_back(
|
| - "Foreground", ThreadPriority::NORMAL, StandbyThreadPolicy::ONE,
|
| - base::RecommendedMaxNumberOfThreadsInPool(3, 8, 0.3, 0),
|
| - base::TimeDelta::FromSeconds(30));
|
| - params_vector.emplace_back(
|
| - "ForegroundBlocking", ThreadPriority::NORMAL, StandbyThreadPolicy::ONE,
|
| - base::RecommendedMaxNumberOfThreadsInPool(3, 8, 0.3, 0),
|
| - base::TimeDelta::FromSeconds(30));
|
| + return base::MakeUnique<base::TaskScheduler::InitParams>(
|
| + base::SchedulerWorkerPoolParams(
|
| + StandbyThreadPolicy::ONE,
|
| + base::RecommendedMaxNumberOfThreadsInPool(2, 8, 0.1, 0),
|
| + base::TimeDelta::FromSeconds(30)),
|
| + base::SchedulerWorkerPoolParams(
|
| + StandbyThreadPolicy::ONE,
|
| + base::RecommendedMaxNumberOfThreadsInPool(2, 8, 0.1, 0),
|
| + base::TimeDelta::FromSeconds(30)),
|
| + base::SchedulerWorkerPoolParams(
|
| + StandbyThreadPolicy::ONE,
|
| + base::RecommendedMaxNumberOfThreadsInPool(3, 8, 0.3, 0),
|
| + base::TimeDelta::FromSeconds(30)),
|
| + base::SchedulerWorkerPoolParams(
|
| + StandbyThreadPolicy::ONE,
|
| + base::RecommendedMaxNumberOfThreadsInPool(3, 8, 0.3, 0),
|
| + base::TimeDelta::FromSeconds(30)));
|
| #else
|
| - params_vector.emplace_back(
|
| - "Background", ThreadPriority::BACKGROUND, StandbyThreadPolicy::ONE,
|
| - base::RecommendedMaxNumberOfThreadsInPool(3, 8, 0.1, 0),
|
| - base::TimeDelta::FromSeconds(30));
|
| - params_vector.emplace_back(
|
| - "BackgroundBlocking", ThreadPriority::BACKGROUND,
|
| - StandbyThreadPolicy::ONE,
|
| - base::RecommendedMaxNumberOfThreadsInPool(3, 8, 0.1, 0),
|
| - base::TimeDelta::FromSeconds(30));
|
| - params_vector.emplace_back(
|
| - "Foreground", ThreadPriority::NORMAL, StandbyThreadPolicy::ONE,
|
| - base::RecommendedMaxNumberOfThreadsInPool(8, 32, 0.3, 0),
|
| - base::TimeDelta::FromSeconds(30));
|
| - // Tasks posted to SequencedWorkerPool or BrowserThreadImpl may be redirected
|
| - // to this pool. Since COM STA is initialized in these environments, it must
|
| - // also be initialized in this pool.
|
| - params_vector.emplace_back(
|
| - "ForegroundBlocking", ThreadPriority::NORMAL, StandbyThreadPolicy::ONE,
|
| - base::RecommendedMaxNumberOfThreadsInPool(8, 32, 0.3, 0),
|
| - base::TimeDelta::FromSeconds(30),
|
| - base::SchedulerBackwardCompatibility::INIT_COM_STA);
|
| + return base::MakeUnique<base::TaskScheduler::InitParams>(
|
| + base::SchedulerWorkerPoolParams(
|
| + StandbyThreadPolicy::ONE,
|
| + base::RecommendedMaxNumberOfThreadsInPool(3, 8, 0.1, 0),
|
| + base::TimeDelta::FromSeconds(30)),
|
| + base::SchedulerWorkerPoolParams(
|
| + StandbyThreadPolicy::ONE,
|
| + base::RecommendedMaxNumberOfThreadsInPool(3, 8, 0.1, 0),
|
| + base::TimeDelta::FromSeconds(30)),
|
| + base::SchedulerWorkerPoolParams(
|
| + StandbyThreadPolicy::ONE,
|
| + base::RecommendedMaxNumberOfThreadsInPool(8, 32, 0.3, 0),
|
| + base::TimeDelta::FromSeconds(30)),
|
| + // Tasks posted to SequencedWorkerPool or BrowserThreadImpl may be
|
| + // redirected to this pool. Since COM STA is initialized in these
|
| + // environments, it must also be initialized in this pool.
|
| + base::SchedulerWorkerPoolParams(
|
| + StandbyThreadPolicy::ONE,
|
| + base::RecommendedMaxNumberOfThreadsInPool(8, 32, 0.3, 0),
|
| + base::TimeDelta::FromSeconds(30),
|
| + base::SchedulerBackwardCompatibility::INIT_COM_STA));
|
| #endif
|
| - 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 DefaultBrowserWorkerPoolIndexForTraits(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;
|
| }
|
|
|
| } // namespace
|
| @@ -965,20 +948,14 @@ void BrowserMainLoop::CreateStartupTasks() {
|
| int BrowserMainLoop::CreateThreads() {
|
| TRACE_EVENT0("startup,rail", "BrowserMainLoop::CreateThreads");
|
|
|
| - std::vector<base::SchedulerWorkerPoolParams> params_vector;
|
| - base::TaskScheduler::WorkerPoolIndexForTraitsCallback
|
| - index_to_traits_callback;
|
| - GetContentClient()->browser()->GetTaskSchedulerInitializationParams(
|
| - ¶ms_vector, &index_to_traits_callback);
|
| -
|
| - if (params_vector.empty() || index_to_traits_callback.is_null()) {
|
| - params_vector = GetDefaultSchedulerWorkerPoolParams();
|
| - index_to_traits_callback =
|
| - base::Bind(&DefaultBrowserWorkerPoolIndexForTraits);
|
| - }
|
| + auto task_scheduler_init_params =
|
| + GetContentClient()->browser()->GetTaskSchedulerInitParams();
|
| + if (!task_scheduler_init_params)
|
| + task_scheduler_init_params = GetDefaultTaskSchedulerInitParams();
|
| + DCHECK(task_scheduler_init_params);
|
|
|
| base::TaskScheduler::CreateAndSetDefaultTaskScheduler(
|
| - params_vector, index_to_traits_callback);
|
| + "", *task_scheduler_init_params.get());
|
|
|
| GetContentClient()->browser()->PerformExperimentalTaskSchedulerRedirections();
|
|
|
|
|