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/scheduler_task_runner_delegate.h" | 10 #include "components/scheduler/child/nestable_single_thread_task_runner.h" |
11 | 11 |
12 namespace scheduler { | 12 namespace scheduler { |
13 | 13 |
14 SchedulerHelper::SchedulerHelper( | 14 SchedulerHelper::SchedulerHelper( |
15 scoped_refptr<SchedulerTaskRunnerDelegate> main_task_runner, | 15 scoped_refptr<NestableSingleThreadTaskRunner> main_task_runner, |
16 const char* tracing_category, | 16 const char* tracing_category, |
17 const char* disabled_by_default_tracing_category, | 17 const char* disabled_by_default_tracing_category, |
18 const char* disabled_by_default_verbose_tracing_category, | 18 const char* disabled_by_default_verbose_tracing_category, |
19 size_t total_task_queue_count) | 19 size_t total_task_queue_count) |
20 : main_task_runner_(main_task_runner), | 20 : task_queue_selector_(new PrioritizingTaskQueueSelector()), |
21 task_queue_selector_(new PrioritizingTaskQueueSelector()), | |
22 task_queue_manager_( | 21 task_queue_manager_( |
23 new TaskQueueManager(total_task_queue_count, | 22 new TaskQueueManager(total_task_queue_count, |
24 main_task_runner, | 23 main_task_runner, |
25 task_queue_selector_.get(), | 24 task_queue_selector_.get(), |
26 disabled_by_default_tracing_category, | 25 disabled_by_default_tracing_category, |
27 disabled_by_default_verbose_tracing_category)), | 26 disabled_by_default_verbose_tracing_category)), |
28 quiescence_monitored_task_queue_mask_( | 27 quiescence_monitored_task_queue_mask_( |
29 ((1ull << total_task_queue_count) - 1ull) & | 28 ((1ull << total_task_queue_count) - 1ull) & |
30 ~(1ull << QueueId::CONTROL_TASK_QUEUE) & | 29 ~(1ull << QueueId::CONTROL_TASK_QUEUE) & |
31 ~(1ull << QueueId::CONTROL_TASK_AFTER_WAKEUP_QUEUE)), | 30 ~(1ull << QueueId::CONTROL_TASK_AFTER_WAKEUP_QUEUE)), |
(...skipping 26 matching lines...) Expand all Loading... |
58 QueueId::CONTROL_TASK_AFTER_WAKEUP_QUEUE, | 57 QueueId::CONTROL_TASK_AFTER_WAKEUP_QUEUE, |
59 TaskQueueManager::WakeupPolicy::DONT_WAKE_OTHER_QUEUES); | 58 TaskQueueManager::WakeupPolicy::DONT_WAKE_OTHER_QUEUES); |
60 | 59 |
61 for (size_t i = 0; i < TASK_QUEUE_COUNT; i++) { | 60 for (size_t i = 0; i < TASK_QUEUE_COUNT; i++) { |
62 task_queue_manager_->SetQueueName( | 61 task_queue_manager_->SetQueueName( |
63 i, TaskQueueIdToString(static_cast<QueueId>(i))); | 62 i, TaskQueueIdToString(static_cast<QueueId>(i))); |
64 } | 63 } |
65 | 64 |
66 // TODO(skyostil): Increase this to 4 (crbug.com/444764). | 65 // TODO(skyostil): Increase this to 4 (crbug.com/444764). |
67 task_queue_manager_->SetWorkBatchSize(1); | 66 task_queue_manager_->SetWorkBatchSize(1); |
68 | |
69 main_task_runner_->SetDefaultTaskRunner( | |
70 task_queue_manager_->TaskRunnerForQueue(QueueId::DEFAULT_TASK_QUEUE)); | |
71 } | 67 } |
72 | 68 |
73 SchedulerHelper::~SchedulerHelper() { | 69 SchedulerHelper::~SchedulerHelper() { |
74 Shutdown(); | |
75 } | 70 } |
76 | 71 |
77 void SchedulerHelper::Shutdown() { | 72 void SchedulerHelper::Shutdown() { |
78 CheckOnValidThread(); | 73 CheckOnValidThread(); |
79 task_queue_manager_.reset(); | 74 task_queue_manager_.reset(); |
80 main_task_runner_->RestoreDefaultTaskRunner(); | |
81 } | 75 } |
82 | 76 |
83 scoped_refptr<base::SingleThreadTaskRunner> | 77 scoped_refptr<base::SingleThreadTaskRunner> |
84 SchedulerHelper::DefaultTaskRunner() { | 78 SchedulerHelper::DefaultTaskRunner() { |
85 CheckOnValidThread(); | 79 CheckOnValidThread(); |
86 return default_task_runner_; | 80 return default_task_runner_; |
87 } | 81 } |
88 | 82 |
89 scoped_refptr<base::SingleThreadTaskRunner> | 83 scoped_refptr<base::SingleThreadTaskRunner> |
90 SchedulerHelper::ControlTaskRunner() { | 84 SchedulerHelper::ControlTaskRunner() { |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
218 } | 212 } |
219 | 213 |
220 void SchedulerHelper::RemoveTaskObserver( | 214 void SchedulerHelper::RemoveTaskObserver( |
221 base::MessageLoop::TaskObserver* task_observer) { | 215 base::MessageLoop::TaskObserver* task_observer) { |
222 CheckOnValidThread(); | 216 CheckOnValidThread(); |
223 if (task_queue_manager_) | 217 if (task_queue_manager_) |
224 task_queue_manager_->RemoveTaskObserver(task_observer); | 218 task_queue_manager_->RemoveTaskObserver(task_observer); |
225 } | 219 } |
226 | 220 |
227 } // namespace scheduler | 221 } // namespace scheduler |
OLD | NEW |