Input event filtering and compositor thread setup.

There are two new classes: InputEventFilter and CompositorThread.
The first sets up a MessageFilter designed to route input events
to the compositor thread.  CompositorThread sets up the compositor
thread and it has a InputEventFilter.

When we pass an event to the CompositorThread, we are actually
passing it to a WebCompositor, which can respond asynchronously
via WebCompositorClient to tell us whether it handled the event or
wants us to punt it up to the WebWidget.  It can also tell us that
it did not handle the event and that we should not bother sending
it to the WebWidget.

InputEventFilter contains all of the interesting thread marshalling
code.  CompositorThread has the WebCompositor hookup.
Review URL: http://codereview.chromium.org/8089002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@104258 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/content/renderer/render_thread.h b/content/renderer/render_thread.h
index 88bd1e89..45204900 100644
--- a/content/renderer/render_thread.h
+++ b/content/renderer/render_thread.h
@@ -25,6 +25,7 @@
 class AppCacheDispatcher;
 class AudioInputMessageFilter;
 class AudioMessageFilter;
+class CompositorThread;
 class DBMessageFilter;
 class DevToolsAgentFilter;
 class FilePath;
@@ -147,6 +148,10 @@
   void DoNotSuspendWebKitSharedTimer();
   void DoNotNotifyWebKitOfModalLoop();
 
+  CompositorThread* compositor_thread() const {
+    return compositor_thread_.get();
+  }
+
   AppCacheDispatcher* appcache_dispatcher() const {
     return appcache_dispatcher_.get();
   }
@@ -279,6 +284,8 @@
   // Map of registered v8 extensions. The key is the extension name.
   std::set<std::string> v8_extensions_;
 
+  scoped_ptr<CompositorThread> compositor_thread_;
+
   ObserverList<content::RenderProcessObserver> observers_;
 
   DISALLOW_COPY_AND_ASSIGN(RenderThread);