| 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 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 156 } | 144 } |
| 157 | 145 |
| 158 TaskQueue* SchedulerHelper::CurrentlyExecutingTaskQueue() const { | 146 TaskQueue* SchedulerHelper::CurrentlyExecutingTaskQueue() const { |
| 159 if (!task_queue_manager_) | 147 if (!task_queue_manager_) |
| 160 return nullptr; | 148 return nullptr; |
| 161 return task_queue_manager_->currently_executing_task_queue(); | 149 return task_queue_manager_->currently_executing_task_queue(); |
| 162 } | 150 } |
| 163 | 151 |
| 164 } // namespace scheduler | 152 } // namespace scheduler |
| 165 } // namespace blink | 153 } // namespace blink |
| OLD | NEW |