diff options
Diffstat (limited to 'chromium/base/threading/thread_unittest.cc')
-rw-r--r-- | chromium/base/threading/thread_unittest.cc | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/chromium/base/threading/thread_unittest.cc b/chromium/base/threading/thread_unittest.cc index bdb57cc19fe..5f1722877ad 100644 --- a/chromium/base/threading/thread_unittest.cc +++ b/chromium/base/threading/thread_unittest.cc @@ -17,16 +17,21 @@ #include "base/run_loop.h" #include "base/single_thread_task_runner.h" #include "base/synchronization/waitable_event.h" +#include "base/task/post_task.h" #include "base/task/sequence_manager/sequence_manager_impl.h" +#include "base/task/task_executor.h" +#include "base/test/bind_test_util.h" #include "base/test/gtest_util.h" #include "base/third_party/dynamic_annotations/dynamic_annotations.h" #include "base/threading/platform_thread.h" #include "base/time/time.h" #include "build/build_config.h" +#include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/platform_test.h" using base::Thread; +using ::testing::NotNull; typedef PlatformTest ThreadTest; @@ -522,6 +527,44 @@ TEST_F(ThreadTest, FlushForTesting) { a.FlushForTesting(); } +TEST_F(ThreadTest, GetTaskExecutorForCurrentThread) { + Thread a("GetTaskExecutorForCurrentThread"); + ASSERT_TRUE(a.Start()); + + base::WaitableEvent event; + + a.task_runner()->PostTask( + FROM_HERE, base::BindLambdaForTesting([&]() { + EXPECT_THAT(base::GetTaskExecutorForCurrentThread(), NotNull()); + event.Signal(); + })); + + event.Wait(); + a.Stop(); +} + +TEST_F(ThreadTest, CurrentThread) { + Thread a("CurrentThread"); + ASSERT_TRUE(a.Start()); + + base::WaitableEvent event; + + a.task_runner()->PostTask( + FROM_HERE, base::BindLambdaForTesting([&]() { + EXPECT_EQ(a.task_runner(), + base::CreateSingleThreadTaskRunner({base::CurrentThread()})); + + // There's only a single task runner so base::TaskPriority is ignored. + EXPECT_EQ(a.task_runner(), base::CreateSingleThreadTaskRunner( + {base::CurrentThread(), + base::TaskPriority::BEST_EFFORT})); + event.Signal(); + })); + + event.Wait(); + a.Stop(); +} + namespace { class SequenceManagerThreadDelegate : public Thread::Delegate { |