| Index: chrome/browser/sync_file_system/drive_backend/callback_helper_unittest.cc
|
| diff --git a/chrome/browser/sync_file_system/drive_backend/callback_helper_unittest.cc b/chrome/browser/sync_file_system/drive_backend/callback_helper_unittest.cc
|
| index 238d24f2f89bbf64f72d02cabb3d093f6c54b756..b6a3984c177428ee047e5da071f025df76632601 100644
|
| --- a/chrome/browser/sync_file_system/drive_backend/callback_helper_unittest.cc
|
| +++ b/chrome/browser/sync_file_system/drive_backend/callback_helper_unittest.cc
|
| @@ -6,6 +6,7 @@
|
|
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/run_loop.h"
|
| +#include "base/threading/thread.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| namespace sync_file_system {
|
| @@ -25,19 +26,32 @@ void CallbackWithPassed(bool* called, scoped_ptr<int>) {
|
| *called = true;
|
| }
|
|
|
| +void VerifyCalledOnTaskRunner(base::TaskRunner* task_runner,
|
| + bool* called) {
|
| + ASSERT_TRUE(called);
|
| + ASSERT_TRUE(task_runner);
|
| +
|
| + EXPECT_TRUE(task_runner->RunsTasksOnCurrentThread());
|
| + EXPECT_FALSE(*called);
|
| + *called = true;
|
| +}
|
| +
|
| } // namespace
|
|
|
| -TEST(DriveBackendCallbackHelperTest, CreateRelayedCallbackTest) {
|
| +TEST(DriveBackendCallbackHelperTest, BasicTest) {
|
| base::MessageLoop message_loop;
|
|
|
| bool called = false;
|
| - CreateRelayedCallback(base::Bind(&SimpleCallback, &called)).Run(0);
|
| + RelayCallbackToCurrentThread(
|
| + FROM_HERE,
|
| + base::Bind(&SimpleCallback, &called)).Run(0);
|
| EXPECT_FALSE(called);
|
| base::RunLoop().RunUntilIdle();
|
| EXPECT_TRUE(called);
|
|
|
| called = false;
|
| - CreateRelayedCallback(
|
| + RelayCallbackToCurrentThread(
|
| + FROM_HERE,
|
| base::Bind(&CallbackWithPassed, &called))
|
| .Run(scoped_ptr<int>(new int));
|
| EXPECT_FALSE(called);
|
| @@ -45,5 +59,34 @@ TEST(DriveBackendCallbackHelperTest, CreateRelayedCallbackTest) {
|
| EXPECT_TRUE(called);
|
| }
|
|
|
| +TEST(DriveBackendCallbackHelperTest, RunOnOtherThreadTest) {
|
| + base::MessageLoop message_loop;
|
| + base::Thread thread("WorkerThread");
|
| + thread.Start();
|
| +
|
| + scoped_refptr<base::MessageLoopProxy> ui_task_runner =
|
| + base::MessageLoopProxy::current();
|
| + scoped_refptr<base::MessageLoopProxy> worker_task_runner =
|
| + thread.message_loop_proxy();
|
| +
|
| + bool called = false;
|
| + base::RunLoop run_loop;
|
| + worker_task_runner->PostTask(
|
| + FROM_HERE,
|
| + RelayCallbackToTaskRunner(
|
| + ui_task_runner, FROM_HERE,
|
| + base::Bind(&VerifyCalledOnTaskRunner,
|
| + ui_task_runner, &called)));
|
| + worker_task_runner->PostTask(
|
| + FROM_HERE,
|
| + RelayCallbackToTaskRunner(
|
| + ui_task_runner, FROM_HERE,
|
| + run_loop.QuitClosure()));
|
| + run_loop.Run();
|
| + EXPECT_TRUE(called);
|
| +
|
| + thread.Stop();
|
| +}
|
| +
|
| } // namespace drive_backend
|
| } // namespace sync_file_system
|
|
|