| Index: content/browser/browser_main_loop.cc
|
| diff --git a/content/browser/browser_main_loop.cc b/content/browser/browser_main_loop.cc
|
| index 5a035af978b5428e5d09c223af05f0ce0b5a9975..098e9f3391ac107760c03e00449585e21f324fd4 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"
|
| @@ -419,67 +418,51 @@ enum WorkerPoolType : size_t {
|
| WORKER_POOL_COUNT // Always last.
|
| };
|
|
|
| -std::vector<base::SchedulerWorkerPoolParams>
|
| -GetDefaultSchedulerWorkerPoolParams() {
|
| +std::unique_ptr<base::TaskSchedulerInitParams>
|
| +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::TaskSchedulerInitParams>(
|
| + 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::TaskSchedulerInitParams>(
|
| + 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
|
| @@ -993,20 +976,16 @@ 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);
|
| + DCHECK(task_scheduler_init_params->IsValid());
|
|
|
| base::TaskScheduler::CreateAndSetDefaultTaskScheduler(
|
| - params_vector, index_to_traits_callback);
|
| + "", *task_scheduler_init_params.get());
|
|
|
| GetContentClient()->browser()->PerformExperimentalTaskSchedulerRedirections();
|
|
|
|
|