Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(878)

Unified Diff: device/hid/hid_connection.cc

Issue 825523003: Convert HidDeviceInfo from a struct to a refcounted class. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added TODO to remove friend class definitions. Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « device/hid/hid_connection.h ('k') | device/hid/hid_connection_linux.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: device/hid/hid_connection.cc
diff --git a/device/hid/hid_connection.cc b/device/hid/hid_connection.cc
index 5ff39f3f95e81ac1f99d67e8ec0dffd0a95233dd..6ce2d7fd0024b20fbab5ad50647613f54500188e 100644
--- a/device/hid/hid_connection.cc
+++ b/device/hid/hid_connection.cc
@@ -38,14 +38,12 @@ struct CollectionIsProtected {
}
};
-bool FindCollectionByReportId(const HidDeviceInfo& device_info,
+bool FindCollectionByReportId(const std::vector<HidCollectionInfo>& collections,
uint8_t report_id,
HidCollectionInfo* collection_info) {
- std::vector<HidCollectionInfo>::const_iterator collection_iter =
- std::find_if(device_info.collections.begin(),
- device_info.collections.end(),
- CollectionHasReportId(report_id));
- if (collection_iter != device_info.collections.end()) {
+ std::vector<HidCollectionInfo>::const_iterator collection_iter = std::find_if(
+ collections.begin(), collections.end(), CollectionHasReportId(report_id));
+ if (collection_iter != collections.end()) {
if (collection_info) {
*collection_info = *collection_iter;
}
@@ -55,17 +53,17 @@ bool FindCollectionByReportId(const HidDeviceInfo& device_info,
return false;
}
-bool HasProtectedCollection(const HidDeviceInfo& device_info) {
- return std::find_if(device_info.collections.begin(),
- device_info.collections.end(),
- CollectionIsProtected()) != device_info.collections.end();
+bool HasProtectedCollection(const std::vector<HidCollectionInfo>& collections) {
+ return std::find_if(collections.begin(), collections.end(),
+ CollectionIsProtected()) != collections.end();
}
} // namespace
-HidConnection::HidConnection(const HidDeviceInfo& device_info)
+HidConnection::HidConnection(scoped_refptr<HidDeviceInfo> device_info)
: device_info_(device_info), closed_(false) {
- has_protected_collection_ = HasProtectedCollection(device_info);
+ has_protected_collection_ =
+ HasProtectedCollection(device_info->collections());
}
HidConnection::~HidConnection() {
@@ -83,7 +81,7 @@ void HidConnection::Close() {
void HidConnection::Read(const ReadCallback& callback) {
DCHECK(thread_checker_.CalledOnValidThread());
- if (device_info_.max_input_report_size == 0) {
+ if (device_info_->max_input_report_size() == 0) {
VLOG(1) << "This device does not support input reports.";
callback.Run(false, NULL, 0);
return;
@@ -96,14 +94,14 @@ void HidConnection::Write(scoped_refptr<net::IOBuffer> buffer,
size_t size,
const WriteCallback& callback) {
DCHECK(thread_checker_.CalledOnValidThread());
- if (device_info_.max_output_report_size == 0) {
+ if (device_info_->max_output_report_size() == 0) {
VLOG(1) << "This device does not support output reports.";
callback.Run(false);
return;
}
DCHECK_GE(size, 1u);
uint8_t report_id = buffer->data()[0];
- if (device_info().has_report_id != (report_id != 0)) {
+ if (device_info_->has_report_id() != (report_id != 0)) {
VLOG(1) << "Invalid output report ID.";
callback.Run(false);
return;
@@ -120,12 +118,12 @@ void HidConnection::Write(scoped_refptr<net::IOBuffer> buffer,
void HidConnection::GetFeatureReport(uint8_t report_id,
const ReadCallback& callback) {
DCHECK(thread_checker_.CalledOnValidThread());
- if (device_info_.max_feature_report_size == 0) {
+ if (device_info_->max_feature_report_size() == 0) {
VLOG(1) << "This device does not support feature reports.";
callback.Run(false, NULL, 0);
return;
}
- if (device_info().has_report_id != (report_id != 0)) {
+ if (device_info_->has_report_id() != (report_id != 0)) {
VLOG(1) << "Invalid feature report ID.";
callback.Run(false, NULL, 0);
return;
@@ -143,14 +141,14 @@ void HidConnection::SendFeatureReport(scoped_refptr<net::IOBuffer> buffer,
size_t size,
const WriteCallback& callback) {
DCHECK(thread_checker_.CalledOnValidThread());
- if (device_info_.max_feature_report_size == 0) {
+ if (device_info_->max_feature_report_size() == 0) {
VLOG(1) << "This device does not support feature reports.";
callback.Run(false);
return;
}
DCHECK_GE(size, 1u);
uint8_t report_id = buffer->data()[0];
- if (device_info().has_report_id != (report_id != 0)) {
+ if (device_info_->has_report_id() != (report_id != 0)) {
VLOG(1) << "Invalid feature report ID.";
callback.Run(false);
return;
@@ -180,7 +178,8 @@ bool HidConnection::CompleteRead(scoped_refptr<net::IOBuffer> buffer,
bool HidConnection::IsReportIdProtected(uint8_t report_id) {
HidCollectionInfo collection_info;
- if (FindCollectionByReportId(device_info_, report_id, &collection_info)) {
+ if (FindCollectionByReportId(device_info_->collections(), report_id,
+ &collection_info)) {
return collection_info.usage.IsProtected();
}
« no previous file with comments | « device/hid/hid_connection.h ('k') | device/hid/hid_connection_linux.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698