db52ee1ce0e99457245bc1e554bcd3bd2e563b58
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / events / system_key_event_listener.h
1 // Copyright (c) 2012 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 #ifndef CHROME_BROWSER_CHROMEOS_EVENTS_SYSTEM_KEY_EVENT_LISTENER_H_
6 #define CHROME_BROWSER_CHROMEOS_EVENTS_SYSTEM_KEY_EVENT_LISTENER_H_
7
8 #include "base/memory/singleton.h"
9 #include "ui/events/platform/platform_event_observer.h"
10
11 typedef union _XEvent XEvent;
12
13 namespace chromeos {
14
15 class SystemKeyEventListener : public ui::PlatformEventObserver {
16  public:
17   static void Initialize();
18   static void Shutdown();
19   // GetInstance returns NULL if not initialized or if already shutdown.
20   static SystemKeyEventListener* GetInstance();
21
22   void Stop();
23
24  private:
25   // Defines the delete on exit Singleton traits we like.  Best to have this
26   // and const/dest private as recommended for Singletons.
27   friend struct DefaultSingletonTraits<SystemKeyEventListener>;
28   friend class SystemKeyEventListenerTest;
29
30   SystemKeyEventListener();
31   virtual ~SystemKeyEventListener();
32
33   // ui::PlatformEventObserver:
34   virtual void WillProcessEvent(const ui::PlatformEvent& event) override;
35   virtual void DidProcessEvent(const ui::PlatformEvent& event) override;
36
37   void ProcessedXEvent(XEvent* xevent);
38
39   bool stopped_;
40
41   // Base X ID for events from the XKB extension.
42   int xkb_event_base_;
43
44   DISALLOW_COPY_AND_ASSIGN(SystemKeyEventListener);
45 };
46
47 }  // namespace chromeos
48
49 #endif  // CHROME_BROWSER_CHROMEOS_EVENTS_SYSTEM_KEY_EVENT_LISTENER_H_