Commit d754c782 authored by Alex Clarke's avatar Alex Clarke Committed by Commit Bot

Register SimpleTaskExecutors for Blink threads

This is needed for implementing PostTaskHere and base::CurrentThread traits.

Bug: 835323
Change-Id: I238f9edeb6097b3f8da64294a515a7f461c6ae5e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1833588
Commit-Queue: Alex Clarke <alexclarke@chromium.org>
Reviewed-by: default avatarAlexander Timin <altimin@chromium.org>
Reviewed-by: default avatarSami Kyöstilä <skyostil@chromium.org>
Cr-Commit-Position: refs/heads/master@{#702083}
parent 4005c014
...@@ -40,6 +40,8 @@ include_rules = [ ...@@ -40,6 +40,8 @@ include_rules = [
"+base/task/sequence_manager/sequence_manager.h", "+base/task/sequence_manager/sequence_manager.h",
"+base/task/sequence_manager/task_queue.h", "+base/task/sequence_manager/task_queue.h",
"+base/task/sequence_manager/time_domain.h", "+base/task/sequence_manager/time_domain.h",
"+base/task/simple_task_executor.h",
"+base/task/task_executor.h",
"+base/task/task_traits.h", "+base/task/task_traits.h",
"+base/threading/platform_thread.h", "+base/threading/platform_thread.h",
"+base/threading/sequenced_task_runner_handle.h", "+base/threading/sequenced_task_runner_handle.h",
......
...@@ -40,6 +40,8 @@ void SchedulerHelper::InitDefaultQueues( ...@@ -40,6 +40,8 @@ void SchedulerHelper::InitDefaultQueues(
DCHECK(sequence_manager_); DCHECK(sequence_manager_);
sequence_manager_->SetDefaultTaskRunner(default_task_runner_); sequence_manager_->SetDefaultTaskRunner(default_task_runner_);
simple_task_executor_.emplace(default_task_runner_);
} }
SchedulerHelper::~SchedulerHelper() { SchedulerHelper::~SchedulerHelper() {
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "base/macros.h" #include "base/macros.h"
#include "base/task/sequence_manager/sequence_manager.h" #include "base/task/sequence_manager/sequence_manager.h"
#include "base/task/simple_task_executor.h"
#include "base/time/tick_clock.h" #include "base/time/tick_clock.h"
#include "third_party/blink/public/platform/task_type.h" #include "third_party/blink/public/platform/task_type.h"
#include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/platform_export.h"
...@@ -134,6 +135,7 @@ class PLATFORM_EXPORT SchedulerHelper ...@@ -134,6 +135,7 @@ class PLATFORM_EXPORT SchedulerHelper
Observer* observer_; // NOT OWNED Observer* observer_; // NOT OWNED
UkmTaskSampler ukm_task_sampler_; UkmTaskSampler ukm_task_sampler_;
base::Optional<base::SimpleTaskExecutor> simple_task_executor_;
DISALLOW_COPY_AND_ASSIGN(SchedulerHelper); DISALLOW_COPY_AND_ASSIGN(SchedulerHelper);
}; };
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include "base/single_thread_task_runner.h" #include "base/single_thread_task_runner.h"
#include "base/task/sequence_manager/test/fake_task.h" #include "base/task/sequence_manager/test/fake_task.h"
#include "base/task/sequence_manager/test/sequence_manager_for_test.h" #include "base/task/sequence_manager/test/sequence_manager_for_test.h"
#include "base/task/task_executor.h"
#include "base/test/bind_test_util.h" #include "base/test/bind_test_util.h"
#include "base/test/metrics/histogram_tester.h" #include "base/test/metrics/histogram_tester.h"
#include "base/test/scoped_feature_list.h" #include "base/test/scoped_feature_list.h"
...@@ -45,6 +46,7 @@ namespace scheduler { ...@@ -45,6 +46,7 @@ namespace scheduler {
namespace main_thread_scheduler_impl_unittest { namespace main_thread_scheduler_impl_unittest {
using testing::Mock; using testing::Mock;
using testing::NotNull;
using InputEventState = WebThreadScheduler::InputEventState; using InputEventState = WebThreadScheduler::InputEventState;
using base::sequence_manager::FakeTask; using base::sequence_manager::FakeTask;
using base::sequence_manager::FakeTaskTiming; using base::sequence_manager::FakeTaskTiming;
...@@ -2106,6 +2108,22 @@ TEST_P(MainThreadSchedulerImplTest, ...@@ -2106,6 +2108,22 @@ TEST_P(MainThreadSchedulerImplTest,
EXPECT_FALSE(BlockingInputExpectedSoon()); EXPECT_FALSE(BlockingInputExpectedSoon());
} }
TEST_P(MainThreadSchedulerImplTest,
GetTaskExecutorForCurrentThreadInPostedTask) {
base::TaskExecutor* task_executor = base::GetTaskExecutorForCurrentThread();
EXPECT_THAT(task_executor, NotNull());
base::RunLoop run_loop;
default_task_runner_->PostTask(
FROM_HERE, base::BindLambdaForTesting([&]() {
EXPECT_EQ(base::GetTaskExecutorForCurrentThread(), task_executor);
run_loop.Quit();
}));
run_loop.Run();
}
class MainThreadSchedulerImplWithMessageLoopTest class MainThreadSchedulerImplWithMessageLoopTest
: public MainThreadSchedulerImplTest { : public MainThreadSchedulerImplTest {
public: public:
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "base/location.h" #include "base/location.h"
#include "base/macros.h" #include "base/macros.h"
#include "base/synchronization/waitable_event.h" #include "base/synchronization/waitable_event.h"
#include "base/task/task_executor.h"
#include "testing/gmock/include/gmock/gmock.h" #include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/renderer/platform/scheduler/public/post_cross_thread_task.h" #include "third_party/blink/renderer/platform/scheduler/public/post_cross_thread_task.h"
...@@ -161,6 +162,13 @@ TEST_F(WorkerThreadTest, TestShutdown) { ...@@ -161,6 +162,13 @@ TEST_F(WorkerThreadTest, TestShutdown) {
thread_.reset(); thread_.reset();
} }
TEST_F(WorkerThreadTest, GetTaskExecutorForCurrentThreadInPostedTask) {
RunOnWorkerThread(FROM_HERE, base::BindOnce([]() {
EXPECT_THAT(base::GetTaskExecutorForCurrentThread(),
testing::NotNull());
}));
}
} // namespace worker_thread_unittest } // namespace worker_thread_unittest
} // namespace scheduler } // namespace scheduler
} // namespace blink } // namespace blink
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment