Enable ChildThreadImpl to refer ChildScheduler for IPC task runner

Now ChildThreadImpl needs to pass an IPC listener task runner to create
IPC::SyncChannel, but ChildThreadImpl can't refer schedulers. This CL
enables ChildThreadImpl to refer ChildScheduler by adding ChildScheduler
::IPCListenerTaskRunner function. Now the implementation
(RendererScheduler::IPCListenerTaskRunner) just returns base::
ThreadTaskRunnerHandle::Get().

This CL is just a preparation for flexible scheduling, and doesn't
change any behavior so far.

Bug: 780785
Change-Id: I46965cab95ca6f98dee56299df9ebea1462886d8
Reviewed-on: https://chromium-review.googlesource.com/760336
Reviewed-by: John Abd-El-Malek <[email protected]>
Reviewed-by: Alexander Timin <[email protected]>
Commit-Queue: Hajime Hoshi <[email protected]>
Cr-Commit-Position: refs/heads/master@{#515913}
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
index 54a314f0..4d09510 100644
--- a/content/renderer/render_thread_impl.cc
+++ b/content/renderer/render_thread_impl.cc
@@ -627,11 +627,13 @@
     const InProcessChildThreadParams& params,
     std::unique_ptr<blink::scheduler::RendererScheduler> scheduler,
     const scoped_refptr<base::SingleThreadTaskRunner>& resource_task_queue)
-    : ChildThreadImpl(Options::Builder()
-                          .InBrowserProcess(params)
-                          .AutoStartServiceManagerConnection(false)
-                          .ConnectToBrowser(true)
-                          .Build()),
+    : ChildThreadImpl(
+          Options::Builder()
+              .InBrowserProcess(params)
+              .AutoStartServiceManagerConnection(false)
+              .ConnectToBrowser(true)
+              .IPCTaskRunner(scheduler ? scheduler->IPCTaskRunner() : nullptr)
+              .Build()),
       renderer_scheduler_(std::move(scheduler)),
       categorized_worker_pool_(new CategorizedWorkerPool()),
       renderer_binding_(this),