Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(677)

Side by Side Diff: components/scheduler/base/task_queue_impl.cc

Issue 1441073006: Move throttling of background timers into the renderer scheduler (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed various dchecks Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698