Chromium Code Reviews| Index: components/task_scheduler_util/initialization_util.cc |
| diff --git a/components/task_scheduler_util/initialization_util.cc b/components/task_scheduler_util/initialization_util.cc |
| index 967acef935f784591bcebcbbd17b1c2e6693c5ea..4c68202a21422c5113035d4135d832d757e26367 100644 |
| --- a/components/task_scheduler_util/initialization_util.cc |
| +++ b/components/task_scheduler_util/initialization_util.cc |
| @@ -171,23 +171,45 @@ VariationsParamsToBrowserSchedulerWorkerPoolParams( |
| } // namespace |
| void InitializeDefaultBrowserTaskScheduler() { |
|
gab
2016/11/30 22:36:58
This is still used by iOS I guess?
robliao
2016/11/30 22:46:57
Yep! This goes away when iOS moves, which will be
|
| + std::vector<base::SchedulerWorkerPoolParams> params_vector; |
| + base::TaskScheduler::WorkerPoolIndexForTraitsCallback |
| + index_to_traits_callback; |
| + GetBrowserTaskSchedulerInitParameters( |
| + ¶ms_vector, &index_to_traits_callback); |
| + base::TaskScheduler::CreateAndSetDefaultTaskScheduler( |
| + params_vector, base::Bind(WorkerPoolIndexForTraits)); |
| + |
| + MaybePerformRedirectionToTaskScheduler(); |
| +} |
| + |
| +void GetBrowserTaskSchedulerInitParameters( |
| + std::vector<base::SchedulerWorkerPoolParams>* params_vector, |
| + base::TaskScheduler::WorkerPoolIndexForTraitsCallback* |
| + index_to_traits_callback) { |
| static constexpr char kFieldTrialName[] = "BrowserScheduler"; |
| std::map<std::string, std::string> variation_params; |
| if (!variations::GetVariationParams(kFieldTrialName, &variation_params)) |
| variation_params = GetDefaultBrowserVariationParams(); |
| - auto params_vector = |
| + *params_vector = |
| VariationsParamsToBrowserSchedulerWorkerPoolParams(variation_params); |
| - if (params_vector.empty()) { |
| + if (params_vector->empty()) { |
| variation_params = GetDefaultBrowserVariationParams(); |
| - params_vector = |
| + *params_vector = |
| VariationsParamsToBrowserSchedulerWorkerPoolParams(variation_params); |
| - DCHECK(!params_vector.empty()); |
| + DCHECK(!params_vector->empty()); |
| } |
| - base::TaskScheduler::CreateAndSetDefaultTaskScheduler( |
| - params_vector, base::Bind(WorkerPoolIndexForTraits)); |
| + *index_to_traits_callback = base::Bind(WorkerPoolIndexForTraits); |
| +} |
| + |
| +void MaybePerformRedirectionToTaskScheduler() { |
| // TODO(gab): Remove this when http://crbug.com/622400 concludes. |
| + static constexpr char kFieldTrialName[] = "BrowserScheduler"; |
| + std::map<std::string, std::string> variation_params; |
| + if (!variations::GetVariationParams(kFieldTrialName, &variation_params)) |
|
gab
2016/11/30 22:36:58
I think we should have defaults for individual fie
robliao
2016/11/30 22:46:57
I believe this is the nature of how things are str
gab
2016/11/30 23:10:38
If we fail to get variations then ChromeContentBro
robliao
2016/11/30 23:45:21
The main reason for this is that the failure path:
|
| + variation_params = GetDefaultBrowserVariationParams(); |
| + |
| const auto sequenced_worker_pool_param = |
| variation_params.find("RedirectSequencedWorkerPools"); |
| if (!base::CommandLine::ForCurrentProcess()->HasSwitch( |