| 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/base/task_queue_impl.h" | 5 #include "components/scheduler/base/task_queue_impl.h" |
| 6 | 6 |
| 7 #include "components/scheduler/base/task_queue_manager.h" | 7 #include "components/scheduler/base/task_queue_manager.h" |
| 8 #include "components/scheduler/base/task_queue_manager_delegate.h" | 8 #include "components/scheduler/base/task_queue_manager_delegate.h" |
| 9 #include "components/scheduler/base/time_domain.h" | 9 #include "components/scheduler/base/time_domain.h" |
| 10 | 10 |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 return PostDelayedTaskImpl(from_here, task, delay, TaskType::NORMAL); | 100 return PostDelayedTaskImpl(from_here, task, delay, TaskType::NORMAL); |
| 101 } | 101 } |
| 102 | 102 |
| 103 bool TaskQueueImpl::PostNonNestableDelayedTask( | 103 bool TaskQueueImpl::PostNonNestableDelayedTask( |
| 104 const tracked_objects::Location& from_here, | 104 const tracked_objects::Location& from_here, |
| 105 const base::Closure& task, | 105 const base::Closure& task, |
| 106 base::TimeDelta delay) { | 106 base::TimeDelta delay) { |
| 107 return PostDelayedTaskImpl(from_here, task, delay, TaskType::NON_NESTABLE); | 107 return PostDelayedTaskImpl(from_here, task, delay, TaskType::NON_NESTABLE); |
| 108 } | 108 } |
| 109 | 109 |
| 110 bool TaskQueueImpl::PostDelayedTaskAt( | |
| 111 const tracked_objects::Location& from_here, | |
| 112 const base::Closure& task, | |
| 113 base::TimeTicks desired_run_time) { | |
| 114 base::AutoLock lock(any_thread_lock_); | |
| 115 if (!any_thread().task_queue_manager) | |
| 116 return false; | |
| 117 LazyNow lazy_now(any_thread().time_domain->CreateLazyNow()); | |
| 118 return PostDelayedTaskLocked(&lazy_now, from_here, task, desired_run_time, | |
| 119 TaskType::NORMAL); | |
| 120 } | |
| 121 | |
| 122 bool TaskQueueImpl::PostDelayedTaskImpl( | 110 bool TaskQueueImpl::PostDelayedTaskImpl( |
| 123 const tracked_objects::Location& from_here, | 111 const tracked_objects::Location& from_here, |
| 124 const base::Closure& task, | 112 const base::Closure& task, |
| 125 base::TimeDelta delay, | 113 base::TimeDelta delay, |
| 126 TaskType task_type) { | 114 TaskType task_type) { |
| 127 base::AutoLock lock(any_thread_lock_); | 115 base::AutoLock lock(any_thread_lock_); |
| 128 if (!any_thread().task_queue_manager) | 116 if (!any_thread().task_queue_manager) |
| 129 return false; | 117 return false; |
| 130 LazyNow lazy_now(any_thread().time_domain->CreateLazyNow()); | 118 LazyNow lazy_now(any_thread().time_domain->CreateLazyNow()); |
| 131 base::TimeTicks desired_run_time; | 119 base::TimeTicks desired_run_time; |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 219 { | 207 { |
| 220 base::AutoLock lock(any_thread_lock_); | 208 base::AutoLock lock(any_thread_lock_); |
| 221 if (any_thread().incoming_queue.empty()) { | 209 if (any_thread().incoming_queue.empty()) { |
| 222 return QueueState::EMPTY; | 210 return QueueState::EMPTY; |
| 223 } else { | 211 } else { |
| 224 return QueueState::NEEDS_PUMPING; | 212 return QueueState::NEEDS_PUMPING; |
| 225 } | 213 } |
| 226 } | 214 } |
| 227 } | 215 } |
| 228 | 216 |
| 217 bool TaskQueueImpl::HasPendingDelayedTask() const { |
| 218 base::AutoLock lock(any_thread_lock_); |
| 219 return !any_thread().delayed_task_queue.empty(); |
| 220 } |
| 221 |
| 229 bool TaskQueueImpl::TaskIsOlderThanQueuedTasks(const Task* task) { | 222 bool TaskQueueImpl::TaskIsOlderThanQueuedTasks(const Task* task) { |
| 230 // A null task is passed when UpdateQueue is called before any task is run. | 223 // A null task is passed when UpdateQueue is called before any task is run. |
| 231 // In this case we don't want to pump an after_wakeup queue, so return true | 224 // In this case we don't want to pump an after_wakeup queue, so return true |
| 232 // here. | 225 // here. |
| 233 if (!task) | 226 if (!task) |
| 234 return true; | 227 return true; |
| 235 | 228 |
| 236 // Return false if there are no task in the incoming queue. | 229 // Return false if there are no task in the incoming queue. |
| 237 if (any_thread().incoming_queue.empty()) | 230 if (any_thread().incoming_queue.empty()) |
| 238 return false; | 231 return false; |
| (...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 551 state->EndDictionary(); | 544 state->EndDictionary(); |
| 552 } | 545 } |
| 553 | 546 |
| 554 size_t TaskQueueImpl::IncomingQueueSizeForTest() const { | 547 size_t TaskQueueImpl::IncomingQueueSizeForTest() const { |
| 555 base::AutoLock lock(any_thread_lock_); | 548 base::AutoLock lock(any_thread_lock_); |
| 556 return any_thread().incoming_queue.size(); | 549 return any_thread().incoming_queue.size(); |
| 557 } | 550 } |
| 558 | 551 |
| 559 } // namespace internal | 552 } // namespace internal |
| 560 } // namespace scheduler | 553 } // namespace scheduler |
| OLD | NEW |