1// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/chromeos/wm_message_listener.h"
6
7namespace chromeos {
8
9// static
10WmMessageListener* WmMessageListener::GetInstance() {
11  static WmMessageListener* instance = NULL;
12  if (!instance) {
13    instance = Singleton<WmMessageListener>::get();
14    MessageLoopForUI::current()->AddObserver(instance);
15  }
16  return instance;
17}
18
19void WmMessageListener::WillProcessEvent(GdkEvent* event) {
20}
21
22void WmMessageListener::DidProcessEvent(GdkEvent* event) {
23  if (event->type == GDK_CLIENT_EVENT) {
24    WmIpc::Message message;
25    GdkEventClient* client_event = reinterpret_cast<GdkEventClient*>(event);
26    WmIpc* wm_ipc = WmIpc::instance();
27    if (wm_ipc->DecodeMessage(*client_event, &message))
28      ProcessMessage(message, client_event->window);
29    else
30      wm_ipc->HandleNonChromeClientMessageEvent(*client_event);
31  }
32}
33
34WmMessageListener::WmMessageListener() {
35}
36
37WmMessageListener::~WmMessageListener() {
38}
39
40void WmMessageListener::ProcessMessage(const WmIpc::Message& message,
41                                       GdkWindow* window) {
42  FOR_EACH_OBSERVER(Observer, observers_, ProcessWmMessage(message, window));
43}
44
45}  // namespace chromeos
46