| Index: device/hid/hid_service_linux.h
|
| diff --git a/device/hid/hid_service_linux.h b/device/hid/hid_service_linux.h
|
| index 80239c4bdeae6ffe7df9969ab9f20eccdc966004..59b6036d8b83e0977c84a238e922bfdaf50e1ae8 100644
|
| --- a/device/hid/hid_service_linux.h
|
| +++ b/device/hid/hid_service_linux.h
|
| @@ -8,40 +8,50 @@
|
| #include "base/compiler_specific.h"
|
| #include "base/macros.h"
|
| #include "base/memory/weak_ptr.h"
|
| -#include "device/hid/device_monitor_linux.h"
|
| #include "device/hid/hid_device_info.h"
|
| #include "device/hid/hid_service.h"
|
|
|
| -struct udev_device;
|
| -
|
| namespace device {
|
|
|
| class HidConnection;
|
|
|
| -class HidServiceLinux : public HidService,
|
| - public DeviceMonitorLinux::Observer {
|
| +class HidServiceLinux : public HidService {
|
| public:
|
| HidServiceLinux(scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner);
|
|
|
| void Connect(const HidDeviceId& device_id,
|
| const ConnectCallback& callback) override;
|
|
|
| - // Implements DeviceMonitorLinux::Observer:
|
| - void OnDeviceAdded(udev_device* device) override;
|
| - void OnDeviceRemoved(udev_device* device) override;
|
| -
|
| private:
|
| + struct ConnectParams;
|
| + class Helper;
|
| + friend class Helper;
|
| +
|
| ~HidServiceLinux() override;
|
|
|
| - void FinishConnect(const HidDeviceId& device_id,
|
| - const std::string device_node,
|
| - const ConnectCallback& callback,
|
| - bool success);
|
| + // Constructs this services helper object that lives on the FILE thread.
|
| + static void StartHelper(
|
| + base::WeakPtr<HidServiceLinux> weak_ptr,
|
| + scoped_refptr<base::SingleThreadTaskRunner> task_runner);
|
| +
|
| + // These functions implement the process of locating, requesting access to and
|
| + // opening a device. Because this operation crosses multiple threads these
|
| + // functions are static and the necessary parameters are passed as a single
|
| + // struct.
|
| +#if defined(OS_CHROMEOS)
|
| + static void OnRequestPathAccessComplete(scoped_ptr<ConnectParams> params,
|
| + bool success);
|
| +#endif // defined(OS_CHROMEOS)
|
| + static void OpenDevice(scoped_ptr<ConnectParams> params);
|
| + static void ConnectImpl(scoped_ptr<ConnectParams> params);
|
|
|
| scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
|
| - scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_;
|
| + scoped_refptr<base::SingleThreadTaskRunner> file_task_runner_;
|
|
|
| + // The helper lives on the FILE thread and holds a weak reference back to the
|
| + // service that owns it.
|
| base::WeakPtrFactory<HidServiceLinux> weak_factory_;
|
| + scoped_ptr<Helper> helper_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(HidServiceLinux);
|
| };
|
|
|