diff options
author | reillyg <reillyg@chromium.org> | 2015-01-08 19:03:37 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-01-09 03:04:57 +0000 |
commit | fbff124cc092ce78fe6b9dea129e9c1b8a2736dd (patch) | |
tree | d6f8db22097e352d1a9079aada72238dcc24ef68 /device/hid/hid_service.h | |
parent | 3538e8bc5f7d75b15fe6288d17998b5d0d495080 (diff) | |
download | chromium_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.h | 15 |
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(); |