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

Unified Diff: trunk/src/device/hid/hid_connection.cc

Issue 369923002: Revert 281133 "chrome.hid: enrich model with report IDs" (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 6 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 | « trunk/src/device/hid/hid_connection.h ('k') | trunk/src/device/hid/hid_connection_linux.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: trunk/src/device/hid/hid_connection.cc
===================================================================
--- trunk/src/device/hid/hid_connection.cc (revision 281281)
+++ trunk/src/device/hid/hid_connection.cc (working copy)
@@ -4,183 +4,8 @@
#include "device/hid/hid_connection.h"
-#include <algorithm>
-
namespace device {
-namespace {
-
-// Functor used to filter collections by report ID.
-struct CollectionHasReportId {
- explicit CollectionHasReportId(const uint8_t report_id)
- : report_id_(report_id) {}
-
- bool operator()(const HidCollectionInfo& info) const {
- if (info.report_ids.size() == 0 ||
- report_id_ == HidConnection::kNullReportId)
- return false;
-
- if (report_id_ == HidConnection::kAnyReportId)
- return true;
-
- return std::find(info.report_ids.begin(),
- info.report_ids.end(),
- report_id_) != info.report_ids.end();
- }
-
- private:
- const uint8_t report_id_;
-};
-
-// Functor returning true if collection has a protected usage.
-struct CollectionIsProtected {
- bool operator()(const HidCollectionInfo& info) const {
- return info.usage.IsProtected();
- }
-};
-
-bool FindCollectionByReportId(const HidDeviceInfo& device_info,
- const 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()) {
- if (collection_info) {
- *collection_info = *collection_iter;
- }
- return true;
- }
-
- return false;
-}
-
-bool HasReportId(const HidDeviceInfo& device_info) {
- return FindCollectionByReportId(
- device_info, HidConnection::kAnyReportId, NULL);
-}
-
-bool HasProtectedCollection(const HidDeviceInfo& device_info) {
- return std::find_if(device_info.collections.begin(),
- device_info.collections.end(),
- CollectionIsProtected()) != device_info.collections.end();
-}
-
-} // namespace
-
-HidConnection::HidConnection(const HidDeviceInfo& device_info)
- : device_info_(device_info) {
- has_protected_collection_ = HasProtectedCollection(device_info);
- has_report_id_ = HasReportId(device_info);
-}
-
-HidConnection::~HidConnection() {
- DCHECK(thread_checker_.CalledOnValidThread());
-}
-
-void HidConnection::Read(scoped_refptr<net::IOBufferWithSize> buffer,
- const IOCallback& callback) {
- DCHECK(thread_checker_.CalledOnValidThread());
- if (device_info_.max_input_report_size == 0) {
- // The device does not support input reports.
- callback.Run(false, 0);
- return;
- }
- int expected_buffer_size = device_info_.max_input_report_size;
- if (!has_report_id()) {
- expected_buffer_size--;
- }
- if (buffer->size() < expected_buffer_size) {
- // Receive buffer is too small.
- callback.Run(false, 0);
- return;
- }
-
- PlatformRead(buffer, callback);
-}
-
-void HidConnection::Write(uint8_t report_id,
- scoped_refptr<net::IOBufferWithSize> buffer,
- const IOCallback& callback) {
- DCHECK(thread_checker_.CalledOnValidThread());
- if (device_info_.max_output_report_size == 0) {
- // The device does not support output reports.
- callback.Run(false, 0);
- return;
- }
- if (IsReportIdProtected(report_id)) {
- callback.Run(false, 0);
- return;
- }
-
- PlatformWrite(report_id, buffer, callback);
-}
-
-void HidConnection::GetFeatureReport(
- uint8_t report_id,
- scoped_refptr<net::IOBufferWithSize> buffer,
- const IOCallback& callback) {
- DCHECK(thread_checker_.CalledOnValidThread());
- if (device_info_.max_feature_report_size == 0) {
- // The device does not support feature reports.
- callback.Run(false, 0);
- return;
- }
- if (IsReportIdProtected(report_id)) {
- callback.Run(false, 0);
- return;
- }
- int expected_buffer_size = device_info_.max_feature_report_size;
- if (!has_report_id()) {
- expected_buffer_size--;
- }
- if (buffer->size() < expected_buffer_size) {
- // Receive buffer is too small.
- callback.Run(false, 0);
- return;
- }
-
- PlatformGetFeatureReport(report_id, buffer, callback);
-}
-
-void HidConnection::SendFeatureReport(
- uint8_t report_id,
- scoped_refptr<net::IOBufferWithSize> buffer,
- const IOCallback& callback) {
- DCHECK(thread_checker_.CalledOnValidThread());
- if (device_info_.max_feature_report_size == 0) {
- // The device does not support feature reports.
- callback.Run(false, 0);
- return;
- }
- if (IsReportIdProtected(report_id)) {
- callback.Run(false, 0);
- return;
- }
-
- PlatformSendFeatureReport(report_id, buffer, callback);
-}
-
-bool HidConnection::CompleteRead(scoped_refptr<net::IOBufferWithSize> buffer,
- const IOCallback& callback) {
- if (buffer->size() == 0 || IsReportIdProtected(buffer->data()[0])) {
- return false;
- }
-
- callback.Run(true, buffer->size());
- return true;
-}
-
-bool HidConnection::IsReportIdProtected(const uint8_t report_id) {
- HidCollectionInfo collection_info;
- if (FindCollectionByReportId(device_info_, report_id, &collection_info)) {
- return collection_info.usage.IsProtected();
- }
-
- return has_protected_collection();
-}
-
PendingHidReport::PendingHidReport() {}
PendingHidReport::~PendingHidReport() {}
@@ -189,4 +14,9 @@
PendingHidRead::~PendingHidRead() {}
+HidConnection::HidConnection(const HidDeviceInfo& device_info)
+ : device_info_(device_info) {}
+
+HidConnection::~HidConnection() {}
+
} // namespace device
« no previous file with comments | « trunk/src/device/hid/hid_connection.h ('k') | trunk/src/device/hid/hid_connection_linux.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698