Index: base/message_loop/message_loop_unittest.cc |
diff --git a/base/message_loop/message_loop_unittest.cc b/base/message_loop/message_loop_unittest.cc |
index ddde6bb170d937fb2a4f5376e193ff507d4f01a7..9c1701756882febefde91d667e3b38312da8cb11 100644 |
--- a/base/message_loop/message_loop_unittest.cc |
+++ b/base/message_loop/message_loop_unittest.cc |
@@ -10,12 +10,12 @@ |
#include "base/logging.h" |
#include "base/memory/ref_counted.h" |
#include "base/message_loop/message_loop.h" |
-#include "base/message_loop/message_loop_proxy_impl.h" |
#include "base/message_loop/message_loop_test.h" |
#include "base/pending_task.h" |
#include "base/posix/eintr_wrapper.h" |
#include "base/run_loop.h" |
#include "base/synchronization/waitable_event.h" |
+#include "base/test/test_simple_task_runner.h" |
#include "base/thread_task_runner_handle.h" |
#include "base/threading/platform_thread.h" |
#include "base/threading/thread.h" |
@@ -1012,4 +1012,26 @@ TEST(MessageLoopTest, AlwaysHaveUserMessageWhenNesting) { |
} |
#endif // defined(OS_WIN) |
+TEST(MessageLoopTest, SetTaskRunner) { |
+ MessageLoop loop; |
+ scoped_refptr<SingleThreadTaskRunner> new_runner(new TestSimpleTaskRunner()); |
+ |
+ loop.SetTaskRunner(new_runner); |
+ EXPECT_EQ(new_runner, loop.task_runner()); |
+ EXPECT_EQ(new_runner, ThreadTaskRunnerHandle::Get()); |
+} |
+ |
+TEST(MessageLoopTest, OriginalRunnerWorks) { |
+ MessageLoop loop; |
+ scoped_refptr<SingleThreadTaskRunner> new_runner(new TestSimpleTaskRunner()); |
+ scoped_refptr<SingleThreadTaskRunner> original_runner(loop.task_runner()); |
+ loop.SetTaskRunner(new_runner); |
+ |
+ scoped_refptr<Foo> foo(new Foo()); |
+ original_runner->PostTask(FROM_HERE, |
+ Bind(&Foo::Test1ConstRef, foo.get(), "a")); |
+ loop.RunUntilIdle(); |
+ EXPECT_EQ(1, foo->test_count()); |
+} |
+ |
} // namespace base |