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;