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.
5 #ifndef UI_EVENTS_OZONE_DEVICE_UDEV_DEVICE_MANAGER_UDEV_H_
6 #define UI_EVENTS_OZONE_DEVICE_UDEV_DEVICE_MANAGER_UDEV_H_
8 #include "base/message_loop/message_pump_libevent.h"
9 #include "base/observer_list.h"
10 #include "device/udev_linux/scoped_udev.h"
11 #include "ui/events/ozone/device/device_manager.h"
16 class DeviceEventObserver
;
18 class DeviceManagerUdev
19 : public DeviceManager
, base::MessagePumpLibevent::Watcher
{
22 ~DeviceManagerUdev() override
;
25 scoped_ptr
<DeviceEvent
> ProcessMessage(udev_device
* device
);
27 // Creates a device-monitor to look for device add/remove/change events.
30 // DeviceManager overrides:
31 void ScanDevices(DeviceEventObserver
* observer
) override
;
32 void AddObserver(DeviceEventObserver
* observer
) override
;
33 void RemoveObserver(DeviceEventObserver
* observer
) override
;
35 // base::MessagePumpLibevent::Watcher overrides:
36 void OnFileCanReadWithoutBlocking(int fd
) override
;
37 void OnFileCanWriteWithoutBlocking(int fd
) override
;
39 device::ScopedUdevPtr udev_
;
40 device::ScopedUdevMonitorPtr monitor_
;
42 base::MessagePumpLibevent::FileDescriptorWatcher controller_
;
44 base::ObserverList
<DeviceEventObserver
> observers_
;
46 DISALLOW_COPY_AND_ASSIGN(DeviceManagerUdev
);
51 #endif // UI_EVENTS_OZONE_DEVICE_UDEV_DEVICE_MANAGER_UDEV_H_