OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "extensions/browser/api/hid/hid_api.h" | 5 #include "extensions/browser/api/hid/hid_api.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
| 10 #include "base/stl_util.h" |
10 #include "device/core/device_client.h" | 11 #include "device/core/device_client.h" |
11 #include "device/hid/hid_connection.h" | 12 #include "device/hid/hid_connection.h" |
12 #include "device/hid/hid_device_filter.h" | 13 #include "device/hid/hid_device_filter.h" |
13 #include "device/hid/hid_device_info.h" | 14 #include "device/hid/hid_device_info.h" |
14 #include "device/hid/hid_service.h" | 15 #include "device/hid/hid_service.h" |
15 #include "extensions/browser/api/api_resource_manager.h" | 16 #include "extensions/browser/api/api_resource_manager.h" |
16 #include "extensions/common/api/hid.h" | 17 #include "extensions/common/api/hid.h" |
17 #include "net/base/io_buffer.h" | 18 #include "net/base/io_buffer.h" |
18 | 19 |
19 namespace hid = extensions::core_api::hid; | 20 namespace hid = extensions::core_api::hid; |
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
246 parameters_ = hid::Send::Params::Create(*args_); | 247 parameters_ = hid::Send::Params::Create(*args_); |
247 EXTENSION_FUNCTION_VALIDATE(parameters_.get()); | 248 EXTENSION_FUNCTION_VALIDATE(parameters_.get()); |
248 set_connection_id(parameters_->connection_id); | 249 set_connection_id(parameters_->connection_id); |
249 return true; | 250 return true; |
250 } | 251 } |
251 | 252 |
252 void HidSendFunction::StartWork(HidConnection* connection) { | 253 void HidSendFunction::StartWork(HidConnection* connection) { |
253 scoped_refptr<net::IOBufferWithSize> buffer( | 254 scoped_refptr<net::IOBufferWithSize> buffer( |
254 new net::IOBufferWithSize(parameters_->data.size() + 1)); | 255 new net::IOBufferWithSize(parameters_->data.size() + 1)); |
255 buffer->data()[0] = static_cast<uint8_t>(parameters_->report_id); | 256 buffer->data()[0] = static_cast<uint8_t>(parameters_->report_id); |
256 memcpy( | 257 memcpy(buffer->data() + 1, parameters_->data.data(), |
257 buffer->data() + 1, parameters_->data.c_str(), parameters_->data.size()); | 258 parameters_->data.size()); |
258 connection->Write(buffer, buffer->size(), | 259 connection->Write(buffer, buffer->size(), |
259 base::Bind(&HidSendFunction::OnFinished, this)); | 260 base::Bind(&HidSendFunction::OnFinished, this)); |
260 } | 261 } |
261 | 262 |
262 void HidSendFunction::OnFinished(bool success) { | 263 void HidSendFunction::OnFinished(bool success) { |
263 if (success) { | 264 if (success) { |
264 Respond(NoArguments()); | 265 Respond(NoArguments()); |
265 } else { | 266 } else { |
266 Respond(Error(kErrorTransfer)); | 267 Respond(Error(kErrorTransfer)); |
267 } | 268 } |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
304 parameters_ = hid::SendFeatureReport::Params::Create(*args_); | 305 parameters_ = hid::SendFeatureReport::Params::Create(*args_); |
305 EXTENSION_FUNCTION_VALIDATE(parameters_.get()); | 306 EXTENSION_FUNCTION_VALIDATE(parameters_.get()); |
306 set_connection_id(parameters_->connection_id); | 307 set_connection_id(parameters_->connection_id); |
307 return true; | 308 return true; |
308 } | 309 } |
309 | 310 |
310 void HidSendFeatureReportFunction::StartWork(HidConnection* connection) { | 311 void HidSendFeatureReportFunction::StartWork(HidConnection* connection) { |
311 scoped_refptr<net::IOBufferWithSize> buffer( | 312 scoped_refptr<net::IOBufferWithSize> buffer( |
312 new net::IOBufferWithSize(parameters_->data.size() + 1)); | 313 new net::IOBufferWithSize(parameters_->data.size() + 1)); |
313 buffer->data()[0] = static_cast<uint8_t>(parameters_->report_id); | 314 buffer->data()[0] = static_cast<uint8_t>(parameters_->report_id); |
314 memcpy( | 315 memcpy(buffer->data() + 1, vector_as_array(¶meters_->data), |
315 buffer->data() + 1, parameters_->data.c_str(), parameters_->data.size()); | 316 parameters_->data.size()); |
316 connection->SendFeatureReport( | 317 connection->SendFeatureReport( |
317 buffer, buffer->size(), | 318 buffer, buffer->size(), |
318 base::Bind(&HidSendFeatureReportFunction::OnFinished, this)); | 319 base::Bind(&HidSendFeatureReportFunction::OnFinished, this)); |
319 } | 320 } |
320 | 321 |
321 void HidSendFeatureReportFunction::OnFinished(bool success) { | 322 void HidSendFeatureReportFunction::OnFinished(bool success) { |
322 if (success) { | 323 if (success) { |
323 Respond(NoArguments()); | 324 Respond(NoArguments()); |
324 } else { | 325 } else { |
325 Respond(Error(kErrorTransfer)); | 326 Respond(Error(kErrorTransfer)); |
326 } | 327 } |
327 } | 328 } |
328 | 329 |
329 } // namespace extensions | 330 } // namespace extensions |
OLD | NEW |