Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(30)

Unified Diff: device/hid/hid_service_linux.h

Issue 771393002: Migrate HidServiceLinux and HidConnectionLinux to BrowserThread::UI. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix HID receive buffer size. Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
};

Powered by Google App Engine
This is Rietveld 408576698