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 |