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 15struct udev_device; 16 17namespace device { 18 19class HidConnection; 20 21class 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