OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "content/browser/startup_task_runner.h" | 5 #include "content/browser/startup_task_runner.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 bool(const tracked_objects::Location&, base::TimeDelta)); | 81 bool(const tracked_objects::Location&, base::TimeDelta)); |
82 MOCK_METHOD2(PostNonNestableDelayedTask, | 82 MOCK_METHOD2(PostNonNestableDelayedTask, |
83 bool(const tracked_objects::Location&, base::TimeDelta)); | 83 bool(const tracked_objects::Location&, base::TimeDelta)); |
84 }; | 84 }; |
85 | 85 |
86 class TaskRunnerProxy : public base::SingleThreadTaskRunner { | 86 class TaskRunnerProxy : public base::SingleThreadTaskRunner { |
87 public: | 87 public: |
88 TaskRunnerProxy(MockTaskRunner* mock) : mock_(mock) {} | 88 TaskRunnerProxy(MockTaskRunner* mock) : mock_(mock) {} |
89 bool RunsTasksOnCurrentThread() const override { return true; } | 89 bool RunsTasksOnCurrentThread() const override { return true; } |
90 bool PostDelayedTask(const tracked_objects::Location& location, | 90 bool PostDelayedTask(const tracked_objects::Location& location, |
91 base::Closure closure, | 91 base::OnceClosure closure, |
92 base::TimeDelta delta) override { | 92 base::TimeDelta delta) override { |
93 last_task_ = std::move(closure); | 93 last_task_ = std::move(closure); |
94 return mock_->PostDelayedTask(location, delta); | 94 return mock_->PostDelayedTask(location, delta); |
95 } | 95 } |
96 bool PostNonNestableDelayedTask(const tracked_objects::Location& location, | 96 bool PostNonNestableDelayedTask(const tracked_objects::Location& location, |
97 base::Closure closure, | 97 base::OnceClosure closure, |
98 base::TimeDelta delta) override { | 98 base::TimeDelta delta) override { |
99 last_task_ = std::move(closure); | 99 last_task_ = std::move(closure); |
100 return mock_->PostNonNestableDelayedTask(location, delta); | 100 return mock_->PostNonNestableDelayedTask(location, delta); |
101 } | 101 } |
102 | 102 |
103 base::Closure TakeLastTaskClosure() { return std::move(last_task_); } | 103 base::OnceClosure TakeLastTaskClosure() { return std::move(last_task_); } |
104 | 104 |
105 private: | 105 private: |
106 ~TaskRunnerProxy() override {} | 106 ~TaskRunnerProxy() override {} |
107 | 107 |
108 MockTaskRunner* mock_; | 108 MockTaskRunner* mock_; |
109 base::Closure last_task_; | 109 base::OnceClosure last_task_; |
110 }; | 110 }; |
111 | 111 |
112 TEST_F(StartupTaskRunnerTest, SynchronousExecution) { | 112 TEST_F(StartupTaskRunnerTest, SynchronousExecution) { |
113 MockTaskRunner mock_runner; | 113 MockTaskRunner mock_runner; |
114 scoped_refptr<TaskRunnerProxy> proxy = new TaskRunnerProxy(&mock_runner); | 114 scoped_refptr<TaskRunnerProxy> proxy = new TaskRunnerProxy(&mock_runner); |
115 | 115 |
116 EXPECT_CALL(mock_runner, PostDelayedTask(_, _)).Times(0); | 116 EXPECT_CALL(mock_runner, PostDelayedTask(_, _)).Times(0); |
117 EXPECT_CALL(mock_runner, PostNonNestableDelayedTask(_, _)).Times(0); | 117 EXPECT_CALL(mock_runner, PostNonNestableDelayedTask(_, _)).Times(0); |
118 | 118 |
119 StartupTaskRunner runner(base::Bind(&Observer), proxy); | 119 StartupTaskRunner runner(base::Bind(&Observer), proxy); |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
304 EXPECT_EQ(observer_calls, 1); | 304 EXPECT_EQ(observer_calls, 1); |
305 EXPECT_EQ(observer_result, 1); | 305 EXPECT_EQ(observer_result, 1); |
306 | 306 |
307 // Check that running synchronously now doesn't do anything | 307 // Check that running synchronously now doesn't do anything |
308 runner.RunAllTasksNow(); | 308 runner.RunAllTasksNow(); |
309 EXPECT_EQ(observer_calls, 1); | 309 EXPECT_EQ(observer_calls, 1); |
310 EXPECT_EQ(task_count, 1); | 310 EXPECT_EQ(task_count, 1); |
311 } | 311 } |
312 } // namespace | 312 } // namespace |
313 } // namespace content | 313 } // namespace content |
OLD | NEW |