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

Side by Side Diff: components/scheduler/child/nestable_task_runner_for_test.cc

Issue 1151353003: [scheduler]: Avoid waking up the scheduler to end long idle periods. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@end_idle_sync_2
Patch Set: Fix tests and update for review. Created 5 years, 6 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
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/child/nestable_task_runner_for_test.h" 5 #include "components/scheduler/child/nestable_task_runner_for_test.h"
6 6
7 #include "base/bind.h"
8 #include "base/bind_helpers.h"
9
7 namespace scheduler { 10 namespace scheduler {
8 11
9 // static 12 // static
10 scoped_refptr<NestableTaskRunnerForTest> NestableTaskRunnerForTest::Create( 13 scoped_refptr<NestableTaskRunnerForTest> NestableTaskRunnerForTest::Create(
11 scoped_refptr<base::SingleThreadTaskRunner> task_runner) { 14 scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
12 return make_scoped_refptr(new NestableTaskRunnerForTest(task_runner)); 15 return make_scoped_refptr(new NestableTaskRunnerForTest(task_runner));
13 } 16 }
14 17
15 NestableTaskRunnerForTest::NestableTaskRunnerForTest( 18 NestableTaskRunnerForTest::NestableTaskRunnerForTest(
16 scoped_refptr<base::SingleThreadTaskRunner> task_runner) 19 scoped_refptr<base::SingleThreadTaskRunner> task_runner)
17 : task_runner_(task_runner), is_nested_(false) { 20 : task_runner_(task_runner), is_nested_(false), weak_factory_(this) {
21 weak_nestable_task_runner_ptr_ = weak_factory_.GetWeakPtr();
18 } 22 }
19 23
20 NestableTaskRunnerForTest::~NestableTaskRunnerForTest() { 24 NestableTaskRunnerForTest::~NestableTaskRunnerForTest() {
21 } 25 }
22 26
27 void NestableTaskRunnerForTest::WrapTask(
28 const base::PendingTask* wrapped_task) {
29 FOR_EACH_OBSERVER(base::MessageLoop::TaskObserver, task_observers_,
30 DidProcessTask(*wrapped_task));
31 wrapped_task->task.Run();
32 FOR_EACH_OBSERVER(base::MessageLoop::TaskObserver, task_observers_,
33 WillProcessTask(*wrapped_task));
34 }
35
23 bool NestableTaskRunnerForTest::PostDelayedTask( 36 bool NestableTaskRunnerForTest::PostDelayedTask(
24 const tracked_objects::Location& from_here, 37 const tracked_objects::Location& from_here,
25 const base::Closure& task, 38 const base::Closure& task,
26 base::TimeDelta delay) { 39 base::TimeDelta delay) {
27 return task_runner_->PostDelayedTask(from_here, task, delay); 40 base::PendingTask* wrapped_task = new base::PendingTask(from_here, task);
41 return task_runner_->PostDelayedTask(
42 from_here,
43 base::Bind(&NestableTaskRunnerForTest::WrapTask,
44 weak_nestable_task_runner_ptr_, base::Owned(wrapped_task)),
45 delay);
28 } 46 }
29 47
30 bool NestableTaskRunnerForTest::PostNonNestableDelayedTask( 48 bool NestableTaskRunnerForTest::PostNonNestableDelayedTask(
31 const tracked_objects::Location& from_here, 49 const tracked_objects::Location& from_here,
32 const base::Closure& task, 50 const base::Closure& task,
33 base::TimeDelta delay) { 51 base::TimeDelta delay) {
34 return task_runner_->PostNonNestableDelayedTask(from_here, task, delay); 52 base::PendingTask* wrapped_task = new base::PendingTask(from_here, task);
53 return task_runner_->PostNonNestableDelayedTask(
54 from_here,
55 base::Bind(&NestableTaskRunnerForTest::WrapTask,
56 weak_nestable_task_runner_ptr_, base::Owned(wrapped_task)),
57 delay);
35 } 58 }
36 59
37 bool NestableTaskRunnerForTest::RunsTasksOnCurrentThread() const { 60 bool NestableTaskRunnerForTest::RunsTasksOnCurrentThread() const {
38 return task_runner_->RunsTasksOnCurrentThread(); 61 return task_runner_->RunsTasksOnCurrentThread();
39 } 62 }
40 63
41 bool NestableTaskRunnerForTest::IsNested() const { 64 bool NestableTaskRunnerForTest::IsNested() const {
42 return is_nested_; 65 return is_nested_;
43 } 66 }
44 67
45 void NestableTaskRunnerForTest::SetNested(bool is_nested) { 68 void NestableTaskRunnerForTest::SetNested(bool is_nested) {
46 is_nested_ = is_nested; 69 is_nested_ = is_nested;
47 } 70 }
48 71
72 void NestableTaskRunnerForTest::AddTaskObserver(
73 base::MessageLoop::TaskObserver* task_observer) {
74 task_observers_.AddObserver(task_observer);
75 }
76
77 void NestableTaskRunnerForTest::RemoveTaskObserver(
78 base::MessageLoop::TaskObserver* task_observer) {
79 task_observers_.RemoveObserver(task_observer);
80 }
81
49 } // namespace scheduler 82 } // namespace scheduler
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698