Chromium Code Reviews| 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..7ab670d477b722a78b05de80c65e6f4099fa0ba2 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 |
|
Ken Rockot(use gerrit already)
2014/12/03 22:35:10
nit: I would maybe indent this with the inner clas
Reilly Grant (use Gerrit)
2014/12/03 23:10:28
Done.
|
| +// 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); |
| }; |