OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/task_queue_manager.h" | 5 #include "components/scheduler/base/task_queue_manager.h" |
6 | 6 |
7 #include <queue> | 7 #include <queue> |
8 #include <set> | 8 #include <set> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
11 #include "base/time/default_tick_clock.h" | 11 #include "base/time/default_tick_clock.h" |
12 #include "components/scheduler/child/lazy_now.h" | 12 #include "components/scheduler/base/lazy_now.h" |
13 #include "components/scheduler/child/nestable_single_thread_task_runner.h" | 13 #include "components/scheduler/base/nestable_single_thread_task_runner.h" |
14 #include "components/scheduler/child/task_queue_impl.h" | 14 #include "components/scheduler/base/task_queue_impl.h" |
15 #include "components/scheduler/child/task_queue_selector.h" | 15 #include "components/scheduler/base/task_queue_selector.h" |
16 #include "components/scheduler/child/task_queue_sets.h" | 16 #include "components/scheduler/base/task_queue_sets.h" |
17 | 17 |
18 namespace { | 18 namespace { |
19 const int64_t kMaxTimeTicks = std::numeric_limits<int64>::max(); | 19 const int64_t kMaxTimeTicks = std::numeric_limits<int64>::max(); |
20 } | 20 } |
21 | 21 |
22 namespace scheduler { | 22 namespace scheduler { |
23 | 23 |
24 TaskQueueManager::TaskQueueManager( | 24 TaskQueueManager::TaskQueueManager( |
25 scoped_refptr<NestableSingleThreadTaskRunner> main_task_runner, | 25 scoped_refptr<NestableSingleThreadTaskRunner> main_task_runner, |
26 const char* disabled_by_default_tracing_category, | 26 const char* disabled_by_default_tracing_category, |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 } | 75 } |
76 | 76 |
77 void TaskQueueManager::SetObserver(Observer* observer) { | 77 void TaskQueueManager::SetObserver(Observer* observer) { |
78 DCHECK(main_thread_checker_.CalledOnValidThread()); | 78 DCHECK(main_thread_checker_.CalledOnValidThread()); |
79 observer_ = observer; | 79 observer_ = observer; |
80 } | 80 } |
81 | 81 |
82 void TaskQueueManager::UnregisterTaskQueue( | 82 void TaskQueueManager::UnregisterTaskQueue( |
83 scoped_refptr<internal::TaskQueueImpl> task_queue) { | 83 scoped_refptr<internal::TaskQueueImpl> task_queue) { |
84 TRACE_EVENT1(disabled_by_default_tracing_category_, | 84 TRACE_EVENT1(disabled_by_default_tracing_category_, |
85 "TaskQueueManager::UnregisterTaskQueue", | 85 "TaskQueueManager::UnregisterTaskQueue", "queue_name", |
86 "queue_name", task_queue->GetName()); | 86 task_queue->GetName()); |
87 DCHECK(main_thread_checker_.CalledOnValidThread()); | 87 DCHECK(main_thread_checker_.CalledOnValidThread()); |
88 if (observer_) | 88 if (observer_) |
89 observer_->OnUnregisterTaskQueue(task_queue); | 89 observer_->OnUnregisterTaskQueue(task_queue); |
90 | 90 |
91 // Add |task_queue| to |queues_to_delete_| so we can prevent it from being | 91 // Add |task_queue| to |queues_to_delete_| so we can prevent it from being |
92 // freed while any of our structures hold hold a raw pointer to it. | 92 // freed while any of our structures hold hold a raw pointer to it. |
93 queues_to_delete_.insert(task_queue); | 93 queues_to_delete_.insert(task_queue); |
94 queues_.erase(task_queue); | 94 queues_.erase(task_queue); |
95 selector_.RemoveQueue(task_queue.get()); | 95 selector_.RemoveQueue(task_queue.get()); |
96 | 96 |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
177 } | 177 } |
178 } | 178 } |
179 | 179 |
180 auto iter = updatable_queue_set_.begin(); | 180 auto iter = updatable_queue_set_.begin(); |
181 while (iter != updatable_queue_set_.end()) { | 181 while (iter != updatable_queue_set_.end()) { |
182 internal::TaskQueueImpl* queue = *iter++; | 182 internal::TaskQueueImpl* queue = *iter++; |
183 // NOTE Update work queue may erase itself from |updatable_queue_set_|. | 183 // NOTE Update work queue may erase itself from |updatable_queue_set_|. |
184 // This is fine, erasing an element won't invalidate any interator, as long | 184 // This is fine, erasing an element won't invalidate any interator, as long |
185 // as the iterator isn't the element being delated. | 185 // as the iterator isn't the element being delated. |
186 if (queue->work_queue().empty()) | 186 if (queue->work_queue().empty()) |
187 queue->UpdateWorkQueue(&lazy_now, should_trigger_wakeup, previous_task); | 187 queue->UpdateWorkQueue(&lazy_now, should_trigger_wakeup, previous_task); |
188 } | 188 } |
189 } | 189 } |
190 | 190 |
191 void TaskQueueManager::ScheduleDelayedWorkTask( | 191 void TaskQueueManager::ScheduleDelayedWorkTask( |
192 scoped_refptr<internal::TaskQueueImpl> queue, | 192 scoped_refptr<internal::TaskQueueImpl> queue, |
193 base::TimeTicks delayed_run_time) { | 193 base::TimeTicks delayed_run_time) { |
194 internal::LazyNow lazy_now(this); | 194 internal::LazyNow lazy_now(this); |
195 ScheduleDelayedWork(queue.get(), delayed_run_time, &lazy_now); | 195 ScheduleDelayedWork(queue.get(), delayed_run_time, &lazy_now); |
196 } | 196 } |
197 | 197 |
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
455 } | 455 } |
456 | 456 |
457 void TaskQueueManager::OnTaskQueueEnabled(internal::TaskQueueImpl* queue) { | 457 void TaskQueueManager::OnTaskQueueEnabled(internal::TaskQueueImpl* queue) { |
458 DCHECK(main_thread_checker_.CalledOnValidThread()); | 458 DCHECK(main_thread_checker_.CalledOnValidThread()); |
459 // Only schedule DoWork if there's something to do. | 459 // Only schedule DoWork if there's something to do. |
460 if (!queue->work_queue().empty()) | 460 if (!queue->work_queue().empty()) |
461 MaybePostDoWorkOnMainRunner(); | 461 MaybePostDoWorkOnMainRunner(); |
462 } | 462 } |
463 | 463 |
464 } // namespace scheduler | 464 } // namespace scheduler |
OLD | NEW |