Index: components/task_scheduler_util/initialization/browser_util.cc |
diff --git a/components/task_scheduler_util/initialization/browser_util.cc b/components/task_scheduler_util/initialization/browser_util.cc |
index ff9bbf92ce5d139169bf975b8d4833cb162f8d1e..5dccd9987ad49ab24cc3d2417c2dfd1880685161 100644 |
--- a/components/task_scheduler_util/initialization/browser_util.cc |
+++ b/components/task_scheduler_util/initialization/browser_util.cc |
@@ -2,125 +2,22 @@ |
// 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/initialization/browser_util.h" |
+// TODO(fdoray): Remove this file once TaskScheduler initialization in the |
+// browser process uses the components/task_scheduler_util/browser/ API on all |
+// platforms. |
-#include <map> |
-#include <string> |
+#include "components/task_scheduler_util/initialization/browser_util.h" |
-#include "base/task_scheduler/initialization_util.h" |
-#include "base/task_scheduler/switches.h" |
-#include "base/task_scheduler/task_traits.h" |
-#include "base/threading/sequenced_worker_pool.h" |
+#include "components/task_scheduler_util/browser/initialization.h" |
namespace task_scheduler_util { |
namespace initialization { |
-namespace { |
- |
-using StandbyThreadPolicy = |
- base::SchedulerWorkerPoolParams::StandbyThreadPolicy; |
-using ThreadPriority = base::ThreadPriority; |
- |
-struct SchedulerWorkerPoolCustomizableConfiguration { |
- SchedulerWorkerPoolCustomizableConfiguration( |
- const char* name_in, |
- ThreadPriority priority_hint_in, |
- const SingleWorkerPoolConfiguration& single_worker_pool_config_in) |
- : name(name_in), |
- priority_hint(priority_hint_in), |
- single_worker_pool_config(single_worker_pool_config_in) {} |
- |
- const char* name; |
- ThreadPriority priority_hint; |
- const SingleWorkerPoolConfiguration& single_worker_pool_config; |
-}; |
- |
-} // namespace |
- |
-std::vector<base::SchedulerWorkerPoolParams> |
-BrowserWorkerPoolConfigurationToSchedulerWorkerPoolParams( |
- const BrowserWorkerPoolsConfiguration& config) { |
- const SchedulerWorkerPoolCustomizableConfiguration worker_pool_config[] = { |
- SchedulerWorkerPoolCustomizableConfiguration("Background", |
- ThreadPriority::BACKGROUND, |
- config.background), |
- SchedulerWorkerPoolCustomizableConfiguration("BackgroundFileIO", |
- ThreadPriority::BACKGROUND, |
- config.background_file_io), |
- SchedulerWorkerPoolCustomizableConfiguration("Foreground", |
- ThreadPriority::NORMAL, |
- config.foreground), |
- SchedulerWorkerPoolCustomizableConfiguration("ForegroundFileIO", |
- ThreadPriority::NORMAL, |
- config.foreground_file_io), |
- |
- }; |
- static_assert(arraysize(worker_pool_config) == WORKER_POOL_COUNT, |
- "Mismatched Worker Pool Types and Predefined Parameters"); |
- constexpr size_t kNumWorkerPoolsDefined = sizeof(config) / |
- sizeof(config.background); |
- static_assert(arraysize(worker_pool_config) == kNumWorkerPoolsDefined, |
- "Mismatch in predefined parameters and worker pools."); |
- std::vector<base::SchedulerWorkerPoolParams> params_vector; |
- for (const auto& config : worker_pool_config) { |
- params_vector.emplace_back( |
- config.name, config.priority_hint, |
- config.single_worker_pool_config.standby_thread_policy, |
- config.single_worker_pool_config.threads, |
- config.single_worker_pool_config.detach_period); |
- } |
- DCHECK_EQ(WORKER_POOL_COUNT, params_vector.size()); |
- return params_vector; |
-} |
- |
// Returns the worker pool index for |traits| defaulting to FOREGROUND or |
// FOREGROUND_FILE_IO on any priorities other than background. |
size_t BrowserWorkerPoolIndexForTraits(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; |
-} |
- |
-#if defined(OS_IOS) |
-std::vector<base::SchedulerWorkerPoolParams> |
-GetDefaultBrowserSchedulerWorkerPoolParams() { |
- constexpr size_t kNumWorkerPoolsDefined = |
- sizeof(BrowserWorkerPoolsConfiguration) / |
- sizeof(SingleWorkerPoolConfiguration); |
- static_assert(kNumWorkerPoolsDefined == 4, |
- "Expected 4 worker pools in BrowserWorkerPoolsConfiguration"); |
- BrowserWorkerPoolsConfiguration config; |
- constexpr size_t kSizeAssignedFields = |
- sizeof(config.background.threads) + |
- sizeof(config.background.detach_period) + |
- sizeof(config.background.standby_thread_policy); |
- static_assert(kSizeAssignedFields == sizeof(config.background), |
- "Not all fields were assigned"); |
- config.background.standby_thread_policy = StandbyThreadPolicy::ONE; |
- config.background.threads = |
- base::RecommendedMaxNumberOfThreadsInPool(2, 8, 0.1, 0); |
- config.background.detach_period = base::TimeDelta::FromSeconds(30); |
- |
- config.background_file_io.standby_thread_policy = StandbyThreadPolicy::ONE; |
- config.background_file_io.threads = |
- base::RecommendedMaxNumberOfThreadsInPool(2, 8, 0.1, 0); |
- config.background_file_io.detach_period = base::TimeDelta::FromSeconds(30); |
- |
- config.foreground.standby_thread_policy = StandbyThreadPolicy::ONE; |
- config.foreground.threads = |
- base::RecommendedMaxNumberOfThreadsInPool(3, 8, 0.3, 0); |
- config.foreground.detach_period = base::TimeDelta::FromSeconds(30); |
- |
- config.foreground_file_io.standby_thread_policy = StandbyThreadPolicy::ONE; |
- config.foreground_file_io.threads = |
- base::RecommendedMaxNumberOfThreadsInPool(3, 8, 0.3, 0); |
- config.foreground_file_io.detach_period = base::TimeDelta::FromSeconds(30); |
- return BrowserWorkerPoolConfigurationToSchedulerWorkerPoolParams(config); |
+ return ::task_scheduler_util::BrowserWorkerPoolIndexForTraits(traits); |
} |
-#endif // defined(OS_IOS) |
} // namespace initialization |
} // namespace task_scheduler_util |