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 DEVICE_HID_HID_SERVICE_LINUX_H_ 6 #define DEVICE_HID_HID_SERVICE_LINUX_H_ 7 8 #include "base/compiler_specific.h" 9 #include "base/macros.h" 10 #include "base/memory/weak_ptr.h" 11 #include "device/hid/device_monitor_linux.h" 12 #include "device/hid/hid_device_info.h" 13 #include "device/hid/hid_service.h" 14 15 struct udev_device; 16 17 namespace device { 18 19 class HidConnection; 20 21 class HidServiceLinux : public HidService, 22 public DeviceMonitorLinux::Observer { 23 public: 24 HidServiceLinux(scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner); 25 26 virtual scoped_refptr<HidConnection> Connect(const HidDeviceId& device_id) 27 OVERRIDE; 28 29 // Implements DeviceMonitorLinux::Observer: 30 virtual void OnDeviceAdded(udev_device* device) OVERRIDE; 31 virtual void OnDeviceRemoved(udev_device* device) OVERRIDE; 32 33 private: 34 virtual ~HidServiceLinux(); 35 36 void OnRequestAccessComplete( 37 const std::string& path, 38 scoped_ptr<HidDeviceInfo> device_info, 39 bool success); 40 41 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_; 42 43 base::WeakPtrFactory<HidServiceLinux> weak_factory_; 44 45 DISALLOW_COPY_AND_ASSIGN(HidServiceLinux); 46 }; 47 48 } // namespace device 49 50 #endif // DEVICE_HID_HID_SERVICE_LINUX_H_ 51