Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / device_uma.h
1 // Copyright 2013 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_DEVICE_UMA_H_
6 #define CHROME_BROWSER_CHROMEOS_DEVICE_UMA_H_
7
8 #include "base/basictypes.h"
9 #include "ui/events/platform/platform_event_observer.h"
10
11 template <typename T> struct DefaultSingletonTraits;
12
13 namespace chromeos {
14
15 // A class to record devices' input event details via the UMA system
16 class DeviceUMA : public ui::PlatformEventObserver {
17  public:
18   // Getting instance starts the class automatically if it hasn't been
19   // started before.
20   static DeviceUMA* GetInstance();
21
22   void Stop();
23
24  private:
25   friend struct DefaultSingletonTraits<DeviceUMA>;
26
27   DeviceUMA();
28   virtual ~DeviceUMA();
29
30   // ui::PlatformEventObserver:
31   virtual void WillProcessEvent(const ui::PlatformEvent& event) OVERRIDE;
32   virtual void DidProcessEvent(const ui::PlatformEvent& event) OVERRIDE;
33
34   // Check CrOS touchpad events to see if the metrics gesture is present
35   void CheckTouchpadEvent(XEvent* event);
36
37   // Check the incoming events for interesting patterns that we care about.
38   void CheckIncomingEvent(XEvent* event);
39
40   bool stopped_;
41
42   DISALLOW_COPY_AND_ASSIGN(DeviceUMA);
43 };
44
45 }  // namespace chromeos
46
47 #endif  // CHROME_BROWSER_CHROMEOS_DEVICE_UMA_H_