| Index: components/task_scheduler_util/renderer/initialization.cc
|
| diff --git a/components/task_scheduler_util/renderer/initialization.cc b/components/task_scheduler_util/renderer/initialization.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..bf17fe13d16ac4c819e5891c90aa74a1a001e568
|
| --- /dev/null
|
| +++ b/components/task_scheduler_util/renderer/initialization.cc
|
| @@ -0,0 +1,58 @@
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "components/task_scheduler_util/renderer/initialization.h"
|
| +
|
| +#include <map>
|
| +#include <string>
|
| +
|
| +#include "base/command_line.h"
|
| +#include "base/logging.h"
|
| +#include "base/task_scheduler/task_traits.h"
|
| +#include "base/threading/platform_thread.h"
|
| +#include "components/task_scheduler_util/common/variations_util.h"
|
| +
|
| +namespace task_scheduler_util {
|
| +
|
| +namespace {
|
| +
|
| +enum WorkerPoolType : size_t {
|
| + BACKGROUND = 0,
|
| + BACKGROUND_FILE_IO,
|
| + FOREGROUND,
|
| + FOREGROUND_FILE_IO,
|
| + WORKER_POOL_COUNT // Always last.
|
| +};
|
| +
|
| +} // namespace
|
| +
|
| +std::vector<base::SchedulerWorkerPoolParams> GetRendererWorkerPoolParams() {
|
| + using ThreadPriority = base::ThreadPriority;
|
| + std::vector<SchedulerConstantWorkerPoolParams> constant_worker_pool_params;
|
| + DCHECK_EQ(BACKGROUND, constant_worker_pool_params.size());
|
| + constant_worker_pool_params.emplace_back("RendererBackground",
|
| + ThreadPriority::BACKGROUND);
|
| + DCHECK_EQ(BACKGROUND_FILE_IO, constant_worker_pool_params.size());
|
| + constant_worker_pool_params.emplace_back("RendererBackgroundFileIO",
|
| + ThreadPriority::BACKGROUND);
|
| + DCHECK_EQ(FOREGROUND, constant_worker_pool_params.size());
|
| + constant_worker_pool_params.emplace_back("RendererForeground",
|
| + ThreadPriority::NORMAL);
|
| + DCHECK_EQ(FOREGROUND_FILE_IO, constant_worker_pool_params.size());
|
| + constant_worker_pool_params.emplace_back("RendererForegroundFileIO",
|
| + ThreadPriority::NORMAL);
|
| + return GetWorkerPoolParams(constant_worker_pool_params,
|
| + GetVariationParamsFromCommandLine(
|
| + *base::CommandLine::ForCurrentProcess()));
|
| +}
|
| +
|
| +size_t RendererWorkerPoolIndexForTraits(const base::TaskTraits& traits) {
|
| + const bool is_background =
|
| + traits.priority() == base::TaskPriority::BACKGROUND;
|
| + if (traits.with_file_io())
|
| + return is_background ? BACKGROUND_FILE_IO : FOREGROUND_FILE_IO;
|
| + return is_background ? BACKGROUND : FOREGROUND;
|
| +}
|
| +
|
| +} // namespace task_scheduler_util
|
|
|