Chromium Code Reviews| Index: base/test/test_mock_time_task_runner.cc |
| diff --git a/base/test/test_mock_time_task_runner.cc b/base/test/test_mock_time_task_runner.cc |
| index 6dfecaf838ba8ee5e5b36f8d067e021e4d51f4c5..e4de708f966fabf67fbe2e0dda0e09ea24899452 100644 |
| --- a/base/test/test_mock_time_task_runner.cc |
| +++ b/base/test/test_mock_time_task_runner.cc |
| @@ -4,10 +4,14 @@ |
| #include "base/test/test_mock_time_task_runner.h" |
| +#include <algorithm> |
| + |
| #include "base/logging.h" |
| #include "base/macros.h" |
| #include "base/memory/ptr_util.h" |
| #include "base/memory/ref_counted.h" |
| +#include "base/message_loop/message_loop.h" |
| +#include "base/threading/thread_task_runner_handle.h" |
|
gab
2016/11/15 22:02:06
rm includes added for impl which moved (as well as
bruthig
2016/11/15 22:17:58
Done.
|
| #include "base/time/clock.h" |
| #include "base/time/tick_clock.h" |
| @@ -173,6 +177,15 @@ std::unique_ptr<TickClock> TestMockTimeTaskRunner::GetMockTickClock() const { |
| return MakeUnique<MockTickClock>(this); |
| } |
| +std::deque<TestPendingTask> TestMockTimeTaskRunner::TakePendingTasks() { |
| + std::deque<TestPendingTask> tasks; |
| + while (!tasks_.empty()) { |
| + tasks.push_back(tasks_.top()); |
| + tasks_.pop(); |
| + } |
|
gab
2016/11/15 22:02:06
Use std::move like TestSimpleTaskRunner does? http
bruthig
2016/11/15 22:17:58
Unless I'm missing something that won't work becau
|
| + return tasks; |
| +} |
| + |
| bool TestMockTimeTaskRunner::HasPendingTask() const { |
| DCHECK(thread_checker_.CalledOnValidThread()); |
| return !tasks_.empty(); |
| @@ -266,4 +279,18 @@ bool TestMockTimeTaskRunner::DequeueNextTask(const TimeTicks& reference, |
| return false; |
| } |
| +// ScopedTestMockTimeTaskRunner ----------------------------------------------- |
| + |
| +ScopedMockTaskRunnerWrapper::ScopedMockTaskRunnerWrapper() { |
| + task_runner_ = new base::TestMockTimeTaskRunner; |
| + previous_task_runner_ = base::ThreadTaskRunnerHandle::Get(); |
| + base::MessageLoop::current()->SetTaskRunner(task_runner_); |
| +} |
| + |
| +ScopedMockTaskRunnerWrapper::~ScopedMockTaskRunnerWrapper() { |
| + DCHECK_EQ(task_runner_, base::ThreadTaskRunnerHandle::Get()); |
| + task_runner_->ClearPendingTasks(); |
| + base::MessageLoop::current()->SetTaskRunner(previous_task_runner_); |
| +} |
| + |
| } // namespace base |