| Index: device/hid/hid_report_descriptor.cc
|
| diff --git a/device/hid/hid_report_descriptor.cc b/device/hid/hid_report_descriptor.cc
|
| index d8031d382e16e6771a275a637ba46ce196ee2dc9..331186c26acbefddd4a3e4648fd69aa87f098dee 100644
|
| --- a/device/hid/hid_report_descriptor.cc
|
| +++ b/device/hid/hid_report_descriptor.cc
|
| @@ -29,9 +29,9 @@ HidReportDescriptor::~HidReportDescriptor() {}
|
| void HidReportDescriptor::GetDetails(
|
| std::vector<HidCollectionInfo>* top_level_collections,
|
| bool* has_report_id,
|
| - uint16_t* max_input_report_size,
|
| - uint16_t* max_output_report_size,
|
| - uint16_t* max_feature_report_size) {
|
| + size_t* max_input_report_size,
|
| + size_t* max_output_report_size,
|
| + size_t* max_feature_report_size) {
|
| DCHECK(top_level_collections);
|
| DCHECK(max_input_report_size);
|
| DCHECK(max_output_report_size);
|
| @@ -45,16 +45,16 @@ void HidReportDescriptor::GetDetails(
|
|
|
| // Global tags data:
|
| HidUsageAndPage::Page current_usage_page = HidUsageAndPage::kPageUndefined;
|
| - uint16_t current_report_count = 0;
|
| - uint16_t cached_report_count = 0;
|
| - uint16_t current_report_size = 0;
|
| - uint16_t cached_report_size = 0;
|
| - uint16_t current_input_report_size = 0;
|
| - uint16_t current_output_report_size = 0;
|
| - uint16_t current_feature_report_size = 0;
|
| + size_t current_report_count = 0;
|
| + size_t cached_report_count = 0;
|
| + size_t current_report_size = 0;
|
| + size_t cached_report_size = 0;
|
| + size_t current_input_report_size = 0;
|
| + size_t current_output_report_size = 0;
|
| + size_t current_feature_report_size = 0;
|
|
|
| // Local tags data:
|
| - uint16_t current_usage = 0;
|
| + uint32_t current_usage = 0;
|
|
|
| for (std::vector<linked_ptr<HidReportDescriptorItem> >::const_iterator
|
| items_iter = items().begin();
|
| @@ -65,10 +65,12 @@ void HidReportDescriptor::GetDetails(
|
| switch (current_item->tag()) {
|
| // Main tags:
|
| case HidReportDescriptorItem::kTagCollection:
|
| - if (!current_item->parent()) {
|
| + if (!current_item->parent() &&
|
| + (current_usage <= std::numeric_limits<uint16_t>::max())) {
|
| // This is a top-level collection.
|
| HidCollectionInfo collection;
|
| - collection.usage = HidUsageAndPage(current_usage, current_usage_page);
|
| + collection.usage = HidUsageAndPage(
|
| + static_cast<uint16_t>(current_usage), current_usage_page);
|
| top_level_collections->push_back(collection);
|
| }
|
| break;
|
| @@ -87,7 +89,7 @@ void HidReportDescriptor::GetDetails(
|
| // Global tags:
|
| case HidReportDescriptorItem::kTagUsagePage:
|
| current_usage_page =
|
| - (HidUsageAndPage::Page)current_item->GetShortData();
|
| + static_cast<HidUsageAndPage::Page>(current_item->GetShortData());
|
| break;
|
| case HidReportDescriptorItem::kTagReportId:
|
| if (top_level_collections->size() > 0) {
|
|
|