diff options
author | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-08 16:16:19 +0000 |
---|---|---|
committer | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-08 16:16:19 +0000 |
commit | 57fc471c6864dea93852742643e32d35a30c8559 (patch) | |
tree | 2a0a070ca96f776e35bbb210bb4c951cd3924f1a | |
parent | d28531ba267d6bcde2d18da74ed629656b812352 (diff) | |
download | chromium_src-57fc471c6864dea93852742643e32d35a30c8559.zip chromium_src-57fc471c6864dea93852742643e32d35a30c8559.tar.gz chromium_src-57fc471c6864dea93852742643e32d35a30c8559.tar.bz2 |
Adds the ability to observer messages from the window manager.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/668192
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40896 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/chromeos/wm_message_listener.cc | 1 | ||||
-rw-r--r-- | chrome/browser/chromeos/wm_message_listener.h | 20 |
2 files changed, 21 insertions, 0 deletions
diff --git a/chrome/browser/chromeos/wm_message_listener.cc b/chrome/browser/chromeos/wm_message_listener.cc index 564ec4e..adbba2e 100644 --- a/chrome/browser/chromeos/wm_message_listener.cc +++ b/chrome/browser/chromeos/wm_message_listener.cc @@ -39,6 +39,7 @@ WmMessageListener::~WmMessageListener() { void WmMessageListener::ProcessMessage(const WmIpc::Message& message, GdkWindow* window) { + FOR_EACH_OBSERVER(Observer, observers_, ProcessWmMessage(message, window)); } } // namespace chromeos diff --git a/chrome/browser/chromeos/wm_message_listener.h b/chrome/browser/chromeos/wm_message_listener.h index f909073..5972889 100644 --- a/chrome/browser/chromeos/wm_message_listener.h +++ b/chrome/browser/chromeos/wm_message_listener.h @@ -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 @@ namespace chromeos { // 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 @@ class WmMessageListener : public MessageLoopForUI::Observer { // Invoked when a valid WmIpc::Message is received. void ProcessMessage(const WmIpc::Message& message, GdkWindow* window); + ObserverList<Observer> observers_; + DISALLOW_COPY_AND_ASSIGN(WmMessageListener); }; |