Index: chrome/browser/chromeos/wm_message_listener.h |
=================================================================== |
--- chrome/browser/chromeos/wm_message_listener.h (revision 40691) |
+++ chrome/browser/chromeos/wm_message_listener.h (working copy) |
@@ -8,6 +8,7 @@ |
#include <gtk/gtk.h> |
#include "base/message_loop.h" |
+#include "base/observer_list.h" |
#include "base/singleton.h" |
#include "chrome/browser/chromeos/wm_ipc.h" |
@@ -18,10 +19,27 @@ |
// WmMessageListener listens for messages from the window manager that need to |
// be dealt with by Chrome. |
+// To listen for window manager messages add an observer. |
class WmMessageListener : public MessageLoopForUI::Observer { |
public: |
+ // Observer is notified any time a message is received from the window |
+ // manager. |
+ class Observer { |
+ public: |
+ virtual void ProcessWmMessage(const WmIpc::Message& message, |
+ GdkWindow* window) = 0; |
+ }; |
+ |
static WmMessageListener* instance(); |
+ void AddObserver(Observer* observer) { |
+ observers_.AddObserver(observer); |
+ } |
+ |
+ void RemoveObserver(Observer* observer) { |
+ observers_.RemoveObserver(observer); |
+ } |
+ |
// MessageLoopForUI::Observer overrides. |
virtual void WillProcessEvent(GdkEvent* event); |
virtual void DidProcessEvent(GdkEvent* event); |
@@ -35,6 +53,8 @@ |
// Invoked when a valid WmIpc::Message is received. |
void ProcessMessage(const WmIpc::Message& message, GdkWindow* window); |
+ ObserverList<Observer> observers_; |
+ |
DISALLOW_COPY_AND_ASSIGN(WmMessageListener); |
}; |