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 "platform/scheduler/child/scheduler_helper.h" | 5 #include "platform/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 "platform/scheduler/base/task_queue_impl.h" | 10 #include "platform/scheduler/base/task_queue_impl.h" |
11 #include "platform/scheduler/child/scheduler_tqm_delegate.h" | 11 #include "platform/scheduler/child/scheduler_tqm_delegate.h" |
12 | 12 |
13 namespace blink { | 13 namespace blink { |
14 namespace scheduler { | 14 namespace scheduler { |
15 | 15 |
16 SchedulerHelper::SchedulerHelper( | 16 SchedulerHelper::SchedulerHelper( |
17 scoped_refptr<SchedulerTqmDelegate> task_queue_manager_delegate, | 17 scoped_refptr<SchedulerTqmDelegate> task_queue_manager_delegate, |
18 const char* tracing_category, | 18 const char* tracing_category, |
19 const char* disabled_by_default_tracing_category, | 19 const char* disabled_by_default_tracing_category, |
20 const char* disabled_by_default_verbose_tracing_category) | 20 const char* disabled_by_default_verbose_tracing_category) |
21 : task_queue_manager_delegate_(task_queue_manager_delegate), | 21 : task_queue_manager_delegate_(task_queue_manager_delegate), |
22 task_queue_manager_( | 22 task_queue_manager_( |
23 new TaskQueueManager(task_queue_manager_delegate, | 23 new TaskQueueManager(task_queue_manager_delegate, |
24 tracing_category, | 24 tracing_category, |
25 disabled_by_default_tracing_category, | 25 disabled_by_default_tracing_category, |
26 disabled_by_default_verbose_tracing_category)), | 26 disabled_by_default_verbose_tracing_category)), |
27 control_task_runner_(NewTaskQueue( | 27 control_task_runner_(NewTaskQueue( |
28 TaskQueue::Spec("control_tq") | 28 TaskQueue::Spec("control_tq").SetShouldNotifyObservers(false))), |
29 .SetWakeupPolicy(TaskQueue::WakeupPolicy::DONT_WAKE_OTHER_QUEUES) | |
30 .SetShouldNotifyObservers(false))), | |
31 control_after_wakeup_task_runner_(NewTaskQueue( | |
32 TaskQueue::Spec("control_after_wakeup_tq") | |
33 .SetPumpPolicy(TaskQueue::PumpPolicy::AFTER_WAKEUP) | |
34 .SetWakeupPolicy(TaskQueue::WakeupPolicy::DONT_WAKE_OTHER_QUEUES) | |
35 .SetShouldNotifyObservers(false))), | |
36 default_task_runner_(NewTaskQueue( | 29 default_task_runner_(NewTaskQueue( |
37 TaskQueue::Spec("default_tq").SetShouldMonitorQuiescence(true))), | 30 TaskQueue::Spec("default_tq").SetShouldMonitorQuiescence(true))), |
38 observer_(nullptr), | 31 observer_(nullptr), |
39 tracing_category_(tracing_category), | 32 tracing_category_(tracing_category), |
40 disabled_by_default_tracing_category_( | 33 disabled_by_default_tracing_category_( |
41 disabled_by_default_tracing_category) { | 34 disabled_by_default_tracing_category) { |
42 control_task_runner_->SetQueuePriority(TaskQueue::CONTROL_PRIORITY); | 35 control_task_runner_->SetQueuePriority(TaskQueue::CONTROL_PRIORITY); |
43 control_after_wakeup_task_runner_->SetQueuePriority( | |
44 TaskQueue::CONTROL_PRIORITY); | |
45 | 36 |
46 task_queue_manager_->SetWorkBatchSize(4); | 37 task_queue_manager_->SetWorkBatchSize(4); |
47 | 38 |
48 DCHECK(task_queue_manager_delegate_); | 39 DCHECK(task_queue_manager_delegate_); |
49 task_queue_manager_delegate_->SetDefaultTaskRunner( | 40 task_queue_manager_delegate_->SetDefaultTaskRunner( |
50 default_task_runner_.get()); | 41 default_task_runner_.get()); |
51 } | 42 } |
52 | 43 |
53 SchedulerHelper::~SchedulerHelper() { | 44 SchedulerHelper::~SchedulerHelper() { |
54 Shutdown(); | 45 Shutdown(); |
(...skipping 15 matching lines...) Expand all Loading... |
70 | 61 |
71 scoped_refptr<TaskQueue> SchedulerHelper::DefaultTaskRunner() { | 62 scoped_refptr<TaskQueue> SchedulerHelper::DefaultTaskRunner() { |
72 CheckOnValidThread(); | 63 CheckOnValidThread(); |
73 return default_task_runner_; | 64 return default_task_runner_; |
74 } | 65 } |
75 | 66 |
76 scoped_refptr<TaskQueue> SchedulerHelper::ControlTaskRunner() { | 67 scoped_refptr<TaskQueue> SchedulerHelper::ControlTaskRunner() { |
77 return control_task_runner_; | 68 return control_task_runner_; |
78 } | 69 } |
79 | 70 |
80 scoped_refptr<TaskQueue> SchedulerHelper::ControlAfterWakeUpTaskRunner() { | |
81 return control_after_wakeup_task_runner_; | |
82 } | |
83 | 71 |
84 void SchedulerHelper::SetWorkBatchSizeForTesting(size_t work_batch_size) { | 72 void SchedulerHelper::SetWorkBatchSizeForTesting(size_t work_batch_size) { |
85 CheckOnValidThread(); | 73 CheckOnValidThread(); |
86 DCHECK(task_queue_manager_.get()); | 74 DCHECK(task_queue_manager_.get()); |
87 task_queue_manager_->SetWorkBatchSize(work_batch_size); | 75 task_queue_manager_->SetWorkBatchSize(work_batch_size); |
88 } | 76 } |
89 | 77 |
90 TaskQueueManager* SchedulerHelper::GetTaskQueueManagerForTesting() { | 78 TaskQueueManager* SchedulerHelper::GetTaskQueueManagerForTesting() { |
91 CheckOnValidThread(); | 79 CheckOnValidThread(); |
92 return task_queue_manager_.get(); | 80 return task_queue_manager_.get(); |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
168 } | 156 } |
169 | 157 |
170 TaskQueue* SchedulerHelper::CurrentlyExecutingTaskQueue() const { | 158 TaskQueue* SchedulerHelper::CurrentlyExecutingTaskQueue() const { |
171 if (!task_queue_manager_) | 159 if (!task_queue_manager_) |
172 return nullptr; | 160 return nullptr; |
173 return task_queue_manager_->currently_executing_task_queue(); | 161 return task_queue_manager_->currently_executing_task_queue(); |
174 } | 162 } |
175 | 163 |
176 } // namespace scheduler | 164 } // namespace scheduler |
177 } // namespace blink | 165 } // namespace blink |
OLD | NEW |