| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/scheduler/child/scheduler_helper.h" | 5 #include "components/scheduler/child/scheduler_helper.h" |
| 6 | 6 |
| 7 #include "base/time/default_tick_clock.h" | 7 #include "base/time/default_tick_clock.h" |
| 8 #include "base/trace_event/trace_event.h" | 8 #include "base/trace_event/trace_event.h" |
| 9 #include "base/trace_event/trace_event_argument.h" | 9 #include "base/trace_event/trace_event_argument.h" |
| 10 #include "components/scheduler/child/nestable_single_thread_task_runner.h" | 10 #include "components/scheduler/child/scheduler_task_runner_delegate.h" |
| 11 #include "components/scheduler/child/task_queue.h" | 11 #include "components/scheduler/child/task_queue.h" |
| 12 | 12 |
| 13 namespace scheduler { | 13 namespace scheduler { |
| 14 | 14 |
| 15 SchedulerHelper::SchedulerHelper( | 15 SchedulerHelper::SchedulerHelper( |
| 16 scoped_refptr<NestableSingleThreadTaskRunner> main_task_runner, | 16 scoped_refptr<SchedulerTaskRunnerDelegate> main_task_runner, |
| 17 const char* tracing_category, | 17 const char* tracing_category, |
| 18 const char* disabled_by_default_tracing_category, | 18 const char* disabled_by_default_tracing_category, |
| 19 const char* disabled_by_default_verbose_tracing_category, | 19 const char* disabled_by_default_verbose_tracing_category, |
| 20 size_t total_task_queue_count) | 20 size_t total_task_queue_count) |
| 21 : task_queue_selector_(new PrioritizingTaskQueueSelector()), | 21 : main_task_runner_(main_task_runner), |
| 22 task_queue_selector_(new PrioritizingTaskQueueSelector()), |
| 22 task_queue_manager_( | 23 task_queue_manager_( |
| 23 new TaskQueueManager(total_task_queue_count, | 24 new TaskQueueManager(total_task_queue_count, |
| 24 main_task_runner, | 25 main_task_runner, |
| 25 task_queue_selector_.get(), | 26 task_queue_selector_.get(), |
| 26 disabled_by_default_tracing_category, | 27 disabled_by_default_tracing_category, |
| 27 disabled_by_default_verbose_tracing_category)), | 28 disabled_by_default_verbose_tracing_category)), |
| 28 quiescence_monitored_task_queue_mask_( | 29 quiescence_monitored_task_queue_mask_( |
| 29 ((1ull << total_task_queue_count) - 1ull) & | 30 ((1ull << total_task_queue_count) - 1ull) & |
| 30 ~(1ull << QueueId::CONTROL_TASK_QUEUE) & | 31 ~(1ull << QueueId::CONTROL_TASK_QUEUE) & |
| 31 ~(1ull << QueueId::CONTROL_TASK_AFTER_WAKEUP_QUEUE)), | 32 ~(1ull << QueueId::CONTROL_TASK_AFTER_WAKEUP_QUEUE)), |
| (...skipping 26 matching lines...) Expand all Loading... |
| 58 QueueId::CONTROL_TASK_AFTER_WAKEUP_QUEUE, | 59 QueueId::CONTROL_TASK_AFTER_WAKEUP_QUEUE, |
| 59 TaskQueueManager::WakeupPolicy::DONT_WAKE_OTHER_QUEUES); | 60 TaskQueueManager::WakeupPolicy::DONT_WAKE_OTHER_QUEUES); |
| 60 | 61 |
| 61 for (size_t i = 0; i < TASK_QUEUE_COUNT; i++) { | 62 for (size_t i = 0; i < TASK_QUEUE_COUNT; i++) { |
| 62 task_queue_manager_->SetQueueName( | 63 task_queue_manager_->SetQueueName( |
| 63 i, TaskQueueIdToString(static_cast<QueueId>(i))); | 64 i, TaskQueueIdToString(static_cast<QueueId>(i))); |
| 64 } | 65 } |
| 65 | 66 |
| 66 // TODO(skyostil): Increase this to 4 (crbug.com/444764). | 67 // TODO(skyostil): Increase this to 4 (crbug.com/444764). |
| 67 task_queue_manager_->SetWorkBatchSize(1); | 68 task_queue_manager_->SetWorkBatchSize(1); |
| 69 |
| 70 main_task_runner_->SetDefaultTaskRunner( |
| 71 task_queue_manager_->TaskRunnerForQueue(QueueId::DEFAULT_TASK_QUEUE)); |
| 68 } | 72 } |
| 69 | 73 |
| 70 SchedulerHelper::~SchedulerHelper() { | 74 SchedulerHelper::~SchedulerHelper() { |
| 75 Shutdown(); |
| 71 } | 76 } |
| 72 | 77 |
| 73 void SchedulerHelper::Shutdown() { | 78 void SchedulerHelper::Shutdown() { |
| 74 CheckOnValidThread(); | 79 CheckOnValidThread(); |
| 75 task_queue_manager_.reset(); | 80 task_queue_manager_.reset(); |
| 81 main_task_runner_->RestoreDefaultTaskRunner(); |
| 76 } | 82 } |
| 77 | 83 |
| 78 scoped_refptr<TaskQueue> SchedulerHelper::DefaultTaskRunner() { | 84 scoped_refptr<TaskQueue> SchedulerHelper::DefaultTaskRunner() { |
| 79 CheckOnValidThread(); | 85 CheckOnValidThread(); |
| 80 return default_task_runner_; | 86 return default_task_runner_; |
| 81 } | 87 } |
| 82 | 88 |
| 83 scoped_refptr<base::SingleThreadTaskRunner> | 89 scoped_refptr<base::SingleThreadTaskRunner> |
| 84 SchedulerHelper::ControlTaskRunner() { | 90 SchedulerHelper::ControlTaskRunner() { |
| 85 return control_task_runner_; | 91 return control_task_runner_; |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 212 } | 218 } |
| 213 | 219 |
| 214 void SchedulerHelper::RemoveTaskObserver( | 220 void SchedulerHelper::RemoveTaskObserver( |
| 215 base::MessageLoop::TaskObserver* task_observer) { | 221 base::MessageLoop::TaskObserver* task_observer) { |
| 216 CheckOnValidThread(); | 222 CheckOnValidThread(); |
| 217 if (task_queue_manager_) | 223 if (task_queue_manager_) |
| 218 task_queue_manager_->RemoveTaskObserver(task_observer); | 224 task_queue_manager_->RemoveTaskObserver(task_observer); |
| 219 } | 225 } |
| 220 | 226 |
| 221 } // namespace scheduler | 227 } // namespace scheduler |
| OLD | NEW |