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

Side by Side Diff: cc/test/ordered_simple_task_runner.cc

Issue 2122543002: Replace Closure in TaskRunner::PostTask with OneShotCallback (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@07_oneshot
Patch Set: fix Created 4 years, 3 months 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
« no previous file with comments | « cc/test/ordered_simple_task_runner.h ('k') | cc/test/ordered_simple_task_runner_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "cc/test/ordered_simple_task_runner.h" 5 #include "cc/test/ordered_simple_task_runner.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <limits> 10 #include <limits>
(...skipping 15 matching lines...) Expand all
26 #define TRACE_TASK_RUN(function, tag, task) 26 #define TRACE_TASK_RUN(function, tag, task)
27 27
28 namespace cc { 28 namespace cc {
29 29
30 // TestOrderablePendingTask implementation 30 // TestOrderablePendingTask implementation
31 TestOrderablePendingTask::TestOrderablePendingTask() 31 TestOrderablePendingTask::TestOrderablePendingTask()
32 : base::TestPendingTask(), 32 : base::TestPendingTask(),
33 task_id_(TestOrderablePendingTask::task_id_counter++) { 33 task_id_(TestOrderablePendingTask::task_id_counter++) {
34 } 34 }
35 35
36 TestOrderablePendingTask::TestOrderablePendingTask(TestOrderablePendingTask&&) =
37 default;
38
36 TestOrderablePendingTask::TestOrderablePendingTask( 39 TestOrderablePendingTask::TestOrderablePendingTask(
37 const tracked_objects::Location& location, 40 const tracked_objects::Location& location,
38 const base::Closure& task, 41 base::OnceClosure task,
39 base::TimeTicks post_time, 42 base::TimeTicks post_time,
40 base::TimeDelta delay, 43 base::TimeDelta delay,
41 TestNestability nestability) 44 TestNestability nestability)
42 : base::TestPendingTask(location, task, post_time, delay, nestability), 45 : base::TestPendingTask(location,
43 task_id_(TestOrderablePendingTask::task_id_counter++) { 46 std::move(task),
44 } 47 post_time,
48 delay,
49 nestability),
50 task_id_(TestOrderablePendingTask::task_id_counter++) {}
45 51
46 size_t TestOrderablePendingTask::task_id_counter = 0; 52 size_t TestOrderablePendingTask::task_id_counter = 0;
47 53
48 TestOrderablePendingTask::~TestOrderablePendingTask() { 54 TestOrderablePendingTask::~TestOrderablePendingTask() {
49 } 55 }
50 56
51 bool TestOrderablePendingTask::operator==( 57 bool TestOrderablePendingTask::operator==(
52 const TestOrderablePendingTask& other) const { 58 const TestOrderablePendingTask& other) const {
53 return task_id_ == other.task_id_; 59 return task_id_ == other.task_id_;
54 } 60 }
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 98
93 // static 99 // static
94 base::TimeTicks OrderedSimpleTaskRunner::AbsoluteMaxNow() { 100 base::TimeTicks OrderedSimpleTaskRunner::AbsoluteMaxNow() {
95 return base::TimeTicks::FromInternalValue( 101 return base::TimeTicks::FromInternalValue(
96 std::numeric_limits<int64_t>::max()); 102 std::numeric_limits<int64_t>::max());
97 } 103 }
98 104
99 // base::TestSimpleTaskRunner implementation 105 // base::TestSimpleTaskRunner implementation
100 bool OrderedSimpleTaskRunner::PostDelayedTask( 106 bool OrderedSimpleTaskRunner::PostDelayedTask(
101 const tracked_objects::Location& from_here, 107 const tracked_objects::Location& from_here,
102 const base::Closure& task, 108 base::OnceClosure task,
103 base::TimeDelta delay) { 109 base::TimeDelta delay) {
104 DCHECK(thread_checker_.CalledOnValidThread()); 110 DCHECK(thread_checker_.CalledOnValidThread());
105 TestOrderablePendingTask pt(from_here, task, now_src_->NowTicks(), delay, 111 TestOrderablePendingTask pt(from_here, std::move(task), now_src_->NowTicks(),
106 base::TestPendingTask::NESTABLE); 112 delay, base::TestPendingTask::NESTABLE);
107 113
108 TRACE_TASK("OrderedSimpleTaskRunner::PostDelayedTask", pt); 114 TRACE_TASK("OrderedSimpleTaskRunner::PostDelayedTask", pt);
109 pending_tasks_.insert(pt); 115 pending_tasks_.insert(std::move(pt));
110 return true; 116 return true;
111 } 117 }
112 118
113 bool OrderedSimpleTaskRunner::PostNonNestableDelayedTask( 119 bool OrderedSimpleTaskRunner::PostNonNestableDelayedTask(
114 const tracked_objects::Location& from_here, 120 const tracked_objects::Location& from_here,
115 const base::Closure& task, 121 base::OnceClosure task,
116 base::TimeDelta delay) { 122 base::TimeDelta delay) {
117 DCHECK(thread_checker_.CalledOnValidThread()); 123 DCHECK(thread_checker_.CalledOnValidThread());
118 TestOrderablePendingTask pt(from_here, task, now_src_->NowTicks(), delay, 124 TestOrderablePendingTask pt(from_here, std::move(task), now_src_->NowTicks(),
119 base::TestPendingTask::NON_NESTABLE); 125 delay, base::TestPendingTask::NON_NESTABLE);
120 126
121 TRACE_TASK("OrderedSimpleTaskRunner::PostNonNestableDelayedTask", pt); 127 TRACE_TASK("OrderedSimpleTaskRunner::PostNonNestableDelayedTask", pt);
122 pending_tasks_.insert(pt); 128 pending_tasks_.insert(std::move(pt));
123 return true; 129 return true;
124 } 130 }
125 131
126 bool OrderedSimpleTaskRunner::RunsTasksOnCurrentThread() const { 132 bool OrderedSimpleTaskRunner::RunsTasksOnCurrentThread() const {
127 DCHECK(thread_checker_.CalledOnValidThread()); 133 DCHECK(thread_checker_.CalledOnValidThread());
128 return true; 134 return true;
129 } 135 }
130 136
131 size_t OrderedSimpleTaskRunner::NumPendingTasks() const { 137 size_t OrderedSimpleTaskRunner::NumPendingTasks() const {
132 return pending_tasks_.size(); 138 return pending_tasks_.size();
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 break; 221 break;
216 } 222 }
217 223
218 std::set<TestOrderablePendingTask>::iterator task_to_run = 224 std::set<TestOrderablePendingTask>::iterator task_to_run =
219 pending_tasks_.begin(); 225 pending_tasks_.begin();
220 { 226 {
221 TRACE_EVENT1("cc", 227 TRACE_EVENT1("cc",
222 "OrderedSimpleTaskRunner::RunPendingTasks running", 228 "OrderedSimpleTaskRunner::RunPendingTasks running",
223 "task", 229 "task",
224 task_to_run->AsValue()); 230 task_to_run->AsValue());
225 task_to_run->task.Run(); 231 std::move(task_to_run->task).Run();
226 } 232 }
227 233
228 pending_tasks_.erase(task_to_run); 234 pending_tasks_.erase(task_to_run);
229 } 235 }
230 236
231 return HasPendingTasks(); 237 return HasPendingTasks();
232 } 238 }
233 239
234 bool OrderedSimpleTaskRunner::RunPendingTasks() { 240 bool OrderedSimpleTaskRunner::RunPendingTasks() {
235 return RunTasksWhile(TaskExistedInitially()); 241 return RunTasksWhile(TaskExistedInitially());
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 base::Owned(new size_t(0))); 308 base::Owned(new size_t(0)));
303 } 309 }
304 310
305 bool OrderedSimpleTaskRunner::TaskRunCountBelowCallback(size_t max_tasks, 311 bool OrderedSimpleTaskRunner::TaskRunCountBelowCallback(size_t max_tasks,
306 size_t* tasks_run) { 312 size_t* tasks_run) {
307 return (*tasks_run)++ < max_tasks; 313 return (*tasks_run)++ < max_tasks;
308 } 314 }
309 315
310 base::Callback<bool(void)> OrderedSimpleTaskRunner::TaskExistedInitially() { 316 base::Callback<bool(void)> OrderedSimpleTaskRunner::TaskExistedInitially() {
311 // base::Bind takes a copy of pending_tasks_ 317 // base::Bind takes a copy of pending_tasks_
318 std::set<size_t> pending_task_ids;
319 for (const auto& pending_task : pending_tasks_)
320 pending_task_ids.insert(pending_task.task_id());
321
312 return base::Bind(&OrderedSimpleTaskRunner::TaskExistedInitiallyCallback, 322 return base::Bind(&OrderedSimpleTaskRunner::TaskExistedInitiallyCallback,
313 base::Unretained(this), 323 base::Unretained(this), std::move(pending_task_ids));
314 pending_tasks_);
315 } 324 }
316 325
317 bool OrderedSimpleTaskRunner::TaskExistedInitiallyCallback( 326 bool OrderedSimpleTaskRunner::TaskExistedInitiallyCallback(
318 const std::set<TestOrderablePendingTask>& existing_tasks) { 327 const std::set<size_t>& existing_tasks) {
319 return existing_tasks.find(*pending_tasks_.begin()) != existing_tasks.end(); 328 return existing_tasks.find(pending_tasks_.begin()->task_id()) !=
329 existing_tasks.end();
320 } 330 }
321 331
322 base::Callback<bool(void)> OrderedSimpleTaskRunner::NowBefore( 332 base::Callback<bool(void)> OrderedSimpleTaskRunner::NowBefore(
323 base::TimeTicks stop_at) { 333 base::TimeTicks stop_at) {
324 return base::Bind(&OrderedSimpleTaskRunner::NowBeforeCallback, 334 return base::Bind(&OrderedSimpleTaskRunner::NowBeforeCallback,
325 base::Unretained(this), 335 base::Unretained(this),
326 stop_at); 336 stop_at);
327 } 337 }
328 bool OrderedSimpleTaskRunner::NowBeforeCallback(base::TimeTicks stop_at) { 338 bool OrderedSimpleTaskRunner::NowBeforeCallback(base::TimeTicks stop_at) {
329 return NextTaskTime() <= stop_at; 339 return NextTaskTime() <= stop_at;
330 } 340 }
331 341
332 base::Callback<bool(void)> OrderedSimpleTaskRunner::AdvanceNow() { 342 base::Callback<bool(void)> OrderedSimpleTaskRunner::AdvanceNow() {
333 return base::Bind(&OrderedSimpleTaskRunner::AdvanceNowCallback, 343 return base::Bind(&OrderedSimpleTaskRunner::AdvanceNowCallback,
334 base::Unretained(this)); 344 base::Unretained(this));
335 } 345 }
336 346
337 bool OrderedSimpleTaskRunner::AdvanceNowCallback() { 347 bool OrderedSimpleTaskRunner::AdvanceNowCallback() {
338 base::TimeTicks next_task_time = NextTaskTime(); 348 base::TimeTicks next_task_time = NextTaskTime();
339 if (now_src_->NowTicks() < next_task_time) { 349 if (now_src_->NowTicks() < next_task_time) {
340 now_src_->Advance(next_task_time - now_src_->NowTicks()); 350 now_src_->Advance(next_task_time - now_src_->NowTicks());
341 } 351 }
342 return true; 352 return true;
343 } 353 }
344 354
345 } // namespace cc 355 } // namespace cc
OLDNEW
« no previous file with comments | « cc/test/ordered_simple_task_runner.h ('k') | cc/test/ordered_simple_task_runner_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698