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); |
}; |