Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / ui / events / ozone / device / udev / device_manager_udev.h
1 // Copyright 2014 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 UI_EVENTS_OZONE_DEVICE_UDEV_DEVICE_MANAGER_UDEV_H_
6 #define UI_EVENTS_OZONE_DEVICE_UDEV_DEVICE_MANAGER_UDEV_H_
7
8 #include "base/message_loop/message_pump_libevent.h"
9 #include "base/observer_list.h"
10 #include "ui/events/ozone/device/device_manager.h"
11 #include "ui/events/ozone/device/udev/scoped_udev.h"
12
13 namespace ui {
14
15 class DeviceEvent;
16 class DeviceEventObserver;
17
18 class DeviceManagerUdev
19     : public DeviceManager, base::MessagePumpLibevent::Watcher {
20  public:
21   DeviceManagerUdev();
22   virtual ~DeviceManagerUdev();
23
24  private:
25   scoped_ptr<DeviceEvent> ProcessMessage(udev_device* device);
26
27   // DeviceManager overrides:
28   virtual void ScanDevices(DeviceEventObserver* observer) OVERRIDE;
29   virtual void AddObserver(DeviceEventObserver* observer) OVERRIDE;
30   virtual void RemoveObserver(DeviceEventObserver* observer) OVERRIDE;
31
32   // base::MessagePumpLibevent::Watcher overrides:
33   virtual void OnFileCanReadWithoutBlocking(int fd) OVERRIDE;
34   virtual void OnFileCanWriteWithoutBlocking(int fd) OVERRIDE;
35
36   scoped_udev udev_;
37   scoped_udev_monitor monitor_;
38
39   base::MessagePumpLibevent::FileDescriptorWatcher controller_;
40
41   ObserverList<DeviceEventObserver> observers_;
42
43   DISALLOW_COPY_AND_ASSIGN(DeviceManagerUdev);
44 };
45
46 }  // namespace ui
47
48 #endif  // UI_EVENTS_OZONE_DEVICE_UDEV_DEVICE_MANAGER_UDEV_H_