Migrate more base::MessageLoops to base::SingleThreadTaskExecutor
A large but trivial migration.
[email protected]
Bug: 891670
Change-Id: I1d3a7575703de8ba17238cb1c9e64d1d825c08d6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1637460
Reviewed-by: Alex Clarke <[email protected]>
Reviewed-by: François Doray <[email protected]>
Commit-Queue: Alex Clarke <[email protected]>
Cr-Commit-Position: refs/heads/master@{#666718}
diff --git a/base/task/single_thread_task_executor.cc b/base/task/single_thread_task_executor.cc
index c94b0804..2c52470 100644
--- a/base/task/single_thread_task_executor.cc
+++ b/base/task/single_thread_task_executor.cc
@@ -6,20 +6,29 @@
#include "base/message_loop/message_pump.h"
#include "base/task/sequence_manager/sequence_manager.h"
+#include "base/task/sequence_manager/sequence_manager_impl.h"
+#include "build/build_config.h"
namespace base {
SingleThreadTaskExecutor::SingleThreadTaskExecutor(MessagePump::Type type)
- : sequence_manager_(
- sequence_manager::CreateSequenceManagerOnCurrentThreadWithPump(
- MessagePump::Create(type),
- sequence_manager::SequenceManager::Settings::Builder()
- .SetMessagePumpType(type)
- .Build())),
+ : sequence_manager_(sequence_manager::CreateUnboundSequenceManager(
+ sequence_manager::SequenceManager::Settings::Builder()
+ .SetMessagePumpType(type)
+ .Build())),
default_task_queue_(sequence_manager_->CreateTaskQueue(
sequence_manager::TaskQueue::Spec("default_tq"))),
type_(type) {
sequence_manager_->SetDefaultTaskRunner(default_task_queue_->task_runner());
+ sequence_manager_->BindToMessagePump(MessagePump::Create(type));
+
+#if defined(OS_IOS)
+ if (type == MessagePump::Type::UI) {
+ static_cast<sequence_manager::internal::SequenceManagerImpl*>(
+ sequence_manager_.get())
+ ->AttachToMessagePump();
+ }
+#endif
}
SingleThreadTaskExecutor::~SingleThreadTaskExecutor() = default;