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_ 48