summaryrefslogtreecommitdiffstats
path: root/device/hid/hid_service.h
diff options
context:
space:
mode:
authorreillyg <reillyg@chromium.org>2015-01-08 19:03:37 -0800
committerCommit bot <commit-bot@chromium.org>2015-01-09 03:04:57 +0000
commitfbff124cc092ce78fe6b9dea129e9c1b8a2736dd (patch)
treed6f8db22097e352d1a9079aada72238dcc24ef68 /device/hid/hid_service.h
parent3538e8bc5f7d75b15fe6288d17998b5d0d495080 (diff)
downloadchromium_src-fbff124cc092ce78fe6b9dea129e9c1b8a2736dd.zip
chromium_src-fbff124cc092ce78fe6b9dea129e9c1b8a2736dd.tar.gz
chromium_src-fbff124cc092ce78fe6b9dea129e9c1b8a2736dd.tar.bz2
Convert HidDeviceInfo from a struct to a refcounted class.
The HidDeviceInfo object for a device is passed around a lot, including being copied every time enumeration of a device is requested. Since this data is constant once a device is enumerated it is better to keep one copy around for the device for as long as it is connected. This will make it similar to the device::UsbDevice class. I consider this a pre-requisite for storing more information in HidDeviceInfo such as the raw report descriptor. Later patches will revisit how this object is constructed and possibly reduce the number of friend classes. BUG=442818 Review URL: https://codereview.chromium.org/825523003 Cr-Commit-Position: refs/heads/master@{#310692}
Diffstat (limited to 'device/hid/hid_service.h')
-rw-r--r--device/hid/hid_service.h15
1 files changed, 8 insertions, 7 deletions
diff --git a/device/hid/hid_service.h b/device/hid/hid_service.h
index 8d296c0..6d6ef2b 100644
--- a/device/hid/hid_service.h
+++ b/device/hid/hid_service.h
@@ -26,11 +26,11 @@ class HidService {
public:
class Observer {
public:
- virtual void OnDeviceAdded(const HidDeviceInfo& info) {}
- virtual void OnDeviceRemoved(const HidDeviceInfo& info) {}
+ virtual void OnDeviceAdded(scoped_refptr<HidDeviceInfo> info);
+ virtual void OnDeviceRemoved(scoped_refptr<HidDeviceInfo> info);
};
- typedef base::Callback<void(const std::vector<HidDeviceInfo>&)>
+ typedef base::Callback<void(const std::vector<scoped_refptr<HidDeviceInfo>>&)>
GetDevicesCallback;
typedef base::Callback<void(scoped_refptr<HidConnection> connection)>
ConnectCallback;
@@ -51,8 +51,9 @@ class HidService {
void RemoveObserver(Observer* observer);
// Fills in a DeviceInfo struct with info for the given device_id.
- // Returns |true| if successful or |false| if |device_id| is invalid.
- bool GetDeviceInfo(const HidDeviceId& device_id, HidDeviceInfo* info) const;
+ // Returns |nullptr| if |device_id| is invalid.
+ scoped_refptr<HidDeviceInfo> GetDeviceInfo(
+ const HidDeviceId& device_id) const;
// Opens a connection to a device. The callback will be run with null on
// failure.
@@ -63,12 +64,12 @@ class HidService {
friend void base::DeletePointer<HidService>(HidService* service);
friend class HidConnectionTest;
- typedef std::map<HidDeviceId, HidDeviceInfo> DeviceMap;
+ typedef std::map<HidDeviceId, scoped_refptr<HidDeviceInfo>> DeviceMap;
HidService();
virtual ~HidService();
- void AddDevice(const HidDeviceInfo& info);
+ void AddDevice(scoped_refptr<HidDeviceInfo> info);
void RemoveDevice(const HidDeviceId& device_id);
void FirstEnumerationComplete();