Creates the WebCompositorOutputSurface, which is the new mechanism for rendering interactions between the compositor and RenderWidgetHost.

As part of this, we plumb vsync information to the compositor.

The new IPC::ForwardingMessageFilter is modified to have route-specific handlers rather than a global handler. This simplifies message routing considerably.

BUG=129674

Review URL: https://chromiumcodereview.appspot.com/10798006

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@151387 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/content/renderer/render_thread_impl.h b/content/renderer/render_thread_impl.h
index dfcdb65..d39fb9e9 100644
--- a/content/renderer/render_thread_impl.h
+++ b/content/renderer/render_thread_impl.h
@@ -52,6 +52,10 @@
 }
 }
 
+namespace IPC {
+class ForwardingMessageFilter;
+}
+
 namespace content {
 class AudioRendererMixerManager;
 class MediaStreamCenter;
@@ -162,6 +166,10 @@
   void DoNotSuspendWebKitSharedTimer();
   void DoNotNotifyWebKitOfModalLoop();
 
+  IPC::ForwardingMessageFilter* compositor_output_surface_filter() const {
+    return compositor_output_surface_filter_.get();
+  }
+
   // Will be NULL if threaded compositing has not been enabled.
   CompositorThread* compositor_thread() const {
     return compositor_thread_.get();
@@ -298,6 +306,8 @@
 
   bool compositor_initialized_;
   scoped_ptr<CompositorThread> compositor_thread_;
+  scoped_refptr<IPC::ForwardingMessageFilter> compositor_output_surface_filter_;
+
   scoped_ptr<content::old::BrowserPluginRegistry> browser_plugin_registry_;
 
   ObserverList<content::RenderProcessObserver> observers_;