Change ServiceManagerConnectionImpl to run service request handlers on the IO thread.

Currently, ServiceManagerConnectionImpl posts to the main thread to run
service request handlers. This prevents services from being launched
before the main message loop starts. The pref service needs to launch
before the main message loop starts. This CL fixes this by running
service request handlers directly on the IO thread.

BUG=654988

Review-Url: https://codereview.chromium.org/2729733003
Cr-Original-Commit-Position: refs/heads/master@{#455295}
Committed: https://chromium.googlesource.com/chromium/src/+/072bd1f5e01408854503b640c9ad62216d9b6b76
Review-Url: https://codereview.chromium.org/2729733003
Cr-Commit-Position: refs/heads/master@{#456316}
diff --git a/content/browser/browser_context.cc b/content/browser/browser_context.cc
index 08c55b8..638e0ecc2 100644
--- a/content/browser/browser_context.cc
+++ b/content/browser/browser_context.cc
@@ -450,7 +450,6 @@
 
     ServiceManagerConnection* connection =
         connection_holder->service_manager_connection();
-    connection->Start();
 
     // New embedded service factories should be added to |connection| here.
 
@@ -469,6 +468,7 @@
     for (const auto& entry : services) {
       connection->AddEmbeddedService(entry.first, entry.second);
     }
+    connection->Start();
   }
 }