summaryrefslogtreecommitdiffstats
path: root/chromium/base/threading/thread_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/base/threading/thread_unittest.cc')
-rw-r--r--chromium/base/threading/thread_unittest.cc43
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 {