Add a RenderProcessObserver.  For now this will be primarily used to filter control messages, so that we can take out the chrome specific message dispatching out of RenderThread.  It will also be used to clean up RenderThread a bit.
Review URL: http://codereview.chromium.org/6750014

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79565 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/renderer/render_thread.h b/chrome/renderer/render_thread.h
index 9b77b10a..db542bd 100644
--- a/chrome/renderer/render_thread.h
+++ b/chrome/renderer/render_thread.h
@@ -10,6 +10,7 @@
 #include <string>
 #include <vector>
 
+#include "base/observer_list.h"
 #include "base/shared_memory.h"
 #include "base/time.h"
 #include "base/timer.h"
@@ -34,6 +35,7 @@
 class ListValue;
 class RendererHistogram;
 class RendererHistogramSnapshots;
+class RenderProcessObserver;
 class RendererNetPredictor;
 class RendererWebKitClientImpl;
 class SpellCheck;
@@ -169,6 +171,9 @@
   virtual bool IsExtensionProcess() const;
   virtual bool IsIncognitoProcess() const;
 
+  void AddObserver(RenderProcessObserver* observer);
+  void RemoveObserver(RenderProcessObserver* observer);
+
   // These methods modify how the next message is sent.  Normally, when sending
   // a synchronous message that runs a nested message loop, we need to suspend
   // callbacks into WebKit.  This involves disabling timers and deferring
@@ -413,6 +418,8 @@
 
   chrome::ChromeContentRendererClient renderer_client_;
 
+  ObserverList<RenderProcessObserver> observers_;
+
   DISALLOW_COPY_AND_ASSIGN(RenderThread);
 };