compositor-worker: Refactor CompositorWorkerManager

Much of the functionality in CompositorWorkerManager
was related to shared compositor thread state. This
patch moves that to CompositorWorkerSharedState, an
implementation detail of CompositorWorkerThread.

The shared state also now uses the real compositor
thread.

The existing compositor worker layout tests needed
to be moved to a virtual test suite since they now
depend on having a compositor thread.

BUG=430155

Committed: https://crrev.com/d710cbc079b51b819349203ee408f36dc056055e
Cr-Commit-Position: refs/heads/master@{#362590}

Review URL: https://codereview.chromium.org/1449953002

Cr-Commit-Position: refs/heads/master@{#362924}
diff --git a/content/renderer/render_thread_impl.h b/content/renderer/render_thread_impl.h
index ad108dc..f2292f5f 100644
--- a/content/renderer/render_thread_impl.h
+++ b/content/renderer/render_thread_impl.h
@@ -72,6 +72,7 @@
 
 namespace scheduler {
 class RendererScheduler;
+class WebThreadBase;
 }
 
 namespace v8 {
@@ -464,6 +465,8 @@
 
   void Init();
 
+  void InitializeCompositorThread();
+
   void OnCreateNewFrame(FrameMsg_NewFrame_Params params);
   void OnCreateNewFrameProxy(int routing_id,
                              int render_view_routing_id,
@@ -588,7 +591,7 @@
   scoped_ptr<base::Thread> file_thread_;
 
   // May be null if overridden by ContentRendererClient.
-  scoped_ptr<base::Thread> compositor_thread_;
+  scoped_ptr<scheduler::WebThreadBase> compositor_thread_;
 
   // Utility class to provide GPU functionalities to media.
   scoped_ptr<content::RendererGpuVideoAcceleratorFactories> gpu_factories_;