123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- // Copyright 2018 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "ios/web/public/thread/web_thread.h"
- #include "base/bind.h"
- #include "ios/web/public/test/web_task_environment.h"
- #include "ios/web/public/thread/web_task_traits.h"
- #include "ios/web/public/thread/web_thread.h"
- #include "ios/web/web_thread_impl.h"
- #include "testing/gtest/include/gtest/gtest.h"
- #include "testing/platform_test.h"
- namespace web {
- class WebThreadTest : public PlatformTest {
- protected:
- static void BasicFunction(base::OnceClosure continuation,
- WebThread::ID target) {
- auto other_thread = target == WebThread::UI ? WebThread::IO : WebThread::UI;
- EXPECT_TRUE(WebThread::CurrentlyOn(target));
- EXPECT_FALSE(WebThread::CurrentlyOn(other_thread));
- std::move(continuation).Run();
- }
- web::WebTaskEnvironment task_environment_{WebTaskEnvironment::REAL_IO_THREAD};
- };
- TEST_F(WebThreadTest, BasePostTask) {
- base::RunLoop run_loop;
- EXPECT_TRUE(GetIOThreadTaskRunner({})->PostTask(
- FROM_HERE, base::BindOnce(&BasicFunction, run_loop.QuitWhenIdleClosure(),
- WebThread::IO)));
- run_loop.Run();
- }
- TEST_F(WebThreadTest, GetUITaskRunnerPostTask) {
- base::RunLoop run_loop;
- EXPECT_TRUE(GetUIThreadTaskRunner({})->PostTask(
- FROM_HERE, base::BindOnce(&BasicFunction, run_loop.QuitWhenIdleClosure(),
- WebThread::UI)));
- run_loop.Run();
- }
- TEST_F(WebThreadTest, GetIOTaskRunnerPostTask) {
- base::RunLoop run_loop;
- EXPECT_TRUE(GetIOThreadTaskRunner({})->PostTask(
- FROM_HERE, base::BindOnce(&BasicFunction, run_loop.QuitWhenIdleClosure(),
- WebThread::IO)));
- run_loop.Run();
- }
- TEST_F(WebThreadTest, PostTaskViaTaskRunner) {
- scoped_refptr<base::TaskRunner> task_runner = GetIOThreadTaskRunner({});
- base::RunLoop run_loop;
- EXPECT_TRUE(task_runner->PostTask(
- FROM_HERE, base::BindOnce(&BasicFunction, run_loop.QuitWhenIdleClosure(),
- WebThread::IO)));
- run_loop.Run();
- }
- TEST_F(WebThreadTest, PostTaskViaSequencedTaskRunner) {
- scoped_refptr<base::SequencedTaskRunner> task_runner =
- GetIOThreadTaskRunner({});
- base::RunLoop run_loop;
- EXPECT_TRUE(task_runner->PostTask(
- FROM_HERE, base::BindOnce(&BasicFunction, run_loop.QuitWhenIdleClosure(),
- WebThread::IO)));
- run_loop.Run();
- }
- TEST_F(WebThreadTest, PostTaskViaSingleThreadTaskRunner) {
- scoped_refptr<base::SingleThreadTaskRunner> task_runner =
- GetIOThreadTaskRunner({});
- base::RunLoop run_loop;
- EXPECT_TRUE(task_runner->PostTask(
- FROM_HERE, base::BindOnce(&BasicFunction, run_loop.QuitWhenIdleClosure(),
- WebThread::IO)));
- run_loop.Run();
- }
- } // namespace web
|