Home | History | Annotate | Download | only in system
      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_SYSTEM_POINTER_DEVICE_OBSERVER_H_
      6 #define CHROME_BROWSER_CHROMEOS_SYSTEM_POINTER_DEVICE_OBSERVER_H_
      7 
      8 #include "base/memory/weak_ptr.h"
      9 #include "base/observer_list.h"
     10 #include "chrome/browser/chromeos/device_hierarchy_observer.h"
     11 
     12 namespace chromeos {
     13 namespace system {
     14 
     15 class PointerDeviceObserver : public DeviceHierarchyObserver {
     16  public:
     17   PointerDeviceObserver();
     18   virtual ~PointerDeviceObserver();
     19 
     20   // Start observing device hierarchy.
     21   void Init();
     22 
     23   // Check for presence of devices.
     24   void CheckDevices();
     25 
     26   class Observer {
     27    public:
     28     virtual void TouchpadExists(bool exists) = 0;
     29     virtual void MouseExists(bool exists) = 0;
     30 
     31    protected:
     32     Observer() {}
     33     virtual ~Observer();
     34   };
     35   void AddObserver(Observer* observer);
     36   void RemoveObserver(Observer* observer);
     37 
     38  private:
     39   // DeviceHierarchyObserver implementation.
     40   virtual void DeviceHierarchyChanged() OVERRIDE;
     41   virtual void DeviceAdded(int device_id) OVERRIDE {}
     42   virtual void DeviceRemoved(int device_id) OVERRIDE {}
     43   virtual void DeviceKeyPressedOrReleased(int device_id) OVERRIDE {}
     44 
     45   // Check for pointer devices.
     46   void CheckTouchpadExists();
     47   void CheckMouseExists();
     48 
     49   // Callback for pointer device checks.
     50   void OnTouchpadExists(bool exists);
     51   void OnMouseExists(bool exists);
     52 
     53   ObserverList<Observer> observers_;
     54 
     55   base::WeakPtrFactory<PointerDeviceObserver> weak_factory_;
     56 
     57   DISALLOW_COPY_AND_ASSIGN(PointerDeviceObserver);
     58 };
     59 
     60 }  // namespace system
     61 }  // namespace chromeos
     62 
     63 #endif  // CHROME_BROWSER_CHROMEOS_SYSTEM_POINTER_DEVICE_OBSERVER_H_
     64