| Index: device/hid/hid_device_info.h | 
| diff --git a/device/hid/hid_device_info.h b/device/hid/hid_device_info.h | 
| index 917a12951484fa5471f5a9b038bdbc5eeae35500..7aae955a151e3c3f1d4a0419f345073098dac39e 100644 | 
| --- a/device/hid/hid_device_info.h | 
| +++ b/device/hid/hid_device_info.h | 
| @@ -8,6 +8,7 @@ | 
| #include <string> | 
| #include <vector> | 
|  | 
| +#include "base/memory/ref_counted.h" | 
| #include "build/build_config.h" | 
| #include "device/hid/hid_collection_info.h" | 
|  | 
| @@ -21,28 +22,64 @@ enum HidBusType { | 
| typedef std::string HidDeviceId; | 
| extern const char kInvalidHidDeviceId[]; | 
|  | 
| -struct HidDeviceInfo { | 
| +class HidDeviceInfo : public base::RefCountedThreadSafe<HidDeviceInfo> { | 
| + public: | 
| HidDeviceInfo(); | 
| + | 
| +  // Device identification. | 
| +  const HidDeviceId& device_id() const { return device_id_; } | 
| +  uint16_t vendor_id() const { return vendor_id_; } | 
| +  uint16_t product_id() const { return product_id_; } | 
| +  const std::string& product_name() const { return product_name_; } | 
| +  const std::string& serial_number() const { return serial_number_; } | 
| +  HidBusType bus_type() const { return bus_type_; } | 
| + | 
| +  // Top-Level Collections information. | 
| +  const std::vector<HidCollectionInfo>& collections() const { | 
| +    return collections_; | 
| +  } | 
| +  bool has_report_id() const { return has_report_id_; }; | 
| +  size_t max_input_report_size() const { return max_input_report_size_; } | 
| +  size_t max_output_report_size() const { return max_output_report_size_; } | 
| +  size_t max_feature_report_size() const { return max_feature_report_size_; } | 
| + | 
| +#if defined(OS_LINUX) | 
| +  const std::string& device_node() const { return device_node_; } | 
| +#endif | 
| + | 
| + private: | 
| +  friend class base::RefCountedThreadSafe<HidDeviceInfo>; | 
| + | 
| +  // TODO(reillyg): Define public constructors that make some of these | 
| +  // declarations unnecessary. | 
| +  friend class HidServiceLinux; | 
| +  friend class HidServiceMac; | 
| +  friend class HidServiceWin; | 
| +  friend class MockHidService; | 
| +  friend class HidFilterTest; | 
| + | 
| ~HidDeviceInfo(); | 
|  | 
| // Device identification. | 
| -  HidDeviceId device_id; | 
| -  uint16_t vendor_id; | 
| -  uint16_t product_id; | 
| -  std::string product_name; | 
| -  std::string serial_number; | 
| -  HidBusType bus_type; | 
| +  HidDeviceId device_id_; | 
| +  uint16_t vendor_id_; | 
| +  uint16_t product_id_; | 
| +  std::string product_name_; | 
| +  std::string serial_number_; | 
| +  HidBusType bus_type_; | 
|  | 
| // Top-Level Collections information. | 
| -  std::vector<HidCollectionInfo> collections; | 
| -  bool has_report_id; | 
| -  size_t max_input_report_size; | 
| -  size_t max_output_report_size; | 
| -  size_t max_feature_report_size; | 
| +  std::vector<HidCollectionInfo> collections_; | 
| +  bool has_report_id_; | 
| +  size_t max_input_report_size_; | 
| +  size_t max_output_report_size_; | 
| +  size_t max_feature_report_size_; | 
|  | 
| #if defined(OS_LINUX) | 
| -  std::string device_node; | 
| +  std::string device_node_; | 
| #endif | 
| + | 
| +  DISALLOW_COPY_AND_ASSIGN(HidDeviceInfo); | 
| }; | 
|  | 
| }  // namespace device | 
|  |