summaryrefslogtreecommitdiffstats
path: root/device/hid/hid_service_linux.h
diff options
context:
space:
mode:
authorreillyg <reillyg@chromium.org>2014-10-10 18:52:47 -0700
committerCommit bot <commit-bot@chromium.org>2014-10-11 01:53:07 +0000
commit7832a4ee148a97057188ecb7165f9252185644f0 (patch)
tree5b09d45a4f82b3ad58c6e9c0a006337a10162014 /device/hid/hid_service_linux.h
parentac72e84adca97ff2d3a4570fc56f9067e75cbcbe (diff)
downloadchromium_src-7832a4ee148a97057188ecb7165f9252185644f0.zip
chromium_src-7832a4ee148a97057188ecb7165f9252185644f0.tar.gz
chromium_src-7832a4ee148a97057188ecb7165f9252185644f0.tar.bz2
Read HID report descriptor from sysfs and request permission on connect.
The HID report descriptor can be read from sysfs instead of executing an ioctl on the device node. This means that on Chrome OS it isn't necessary to ask the permission broker for access to the device on enumeration. It can be delayed until the device is opened, as it is for USB devices. This also resolves a long-standing issue with HID devices not being enumerated on Chrome OS the first time an enumeration is requested because of the extra asynchronous step required only on that platform. BUG=411899 Review URL: https://codereview.chromium.org/641203003 Cr-Commit-Position: refs/heads/master@{#299228}
Diffstat (limited to 'device/hid/hid_service_linux.h')
-rw-r--r--device/hid/hid_service_linux.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/device/hid/hid_service_linux.h b/device/hid/hid_service_linux.h
index 7c61def..765278f 100644
--- a/device/hid/hid_service_linux.h
+++ b/device/hid/hid_service_linux.h
@@ -23,6 +23,12 @@ class HidServiceLinux : public HidService,
public:
HidServiceLinux(scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner);
+#if defined(OS_CHROMEOS)
+ virtual void RequestAccess(
+ const HidDeviceId& device_id,
+ const base::Callback<void(bool success)>& callback) override;
+#endif
+
virtual scoped_refptr<HidConnection> Connect(const HidDeviceId& device_id)
override;
@@ -34,10 +40,10 @@ class HidServiceLinux : public HidService,
virtual ~HidServiceLinux();
void OnRequestAccessComplete(
- const std::string& path,
- scoped_ptr<HidDeviceInfo> device_info,
+ const base::Callback<void(bool success)>& callback,
bool success);
+ scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_;
base::WeakPtrFactory<HidServiceLinux> weak_factory_;