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

Side by Side Diff: chrome/browser/extensions/api/usb/usb_device_resource.cc

Issue 10972018: Changing USB API buffer ownership. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Style fix, don't memset. Created 8 years, 2 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/extensions/api/usb/usb_device_resource.h" 5 #include "chrome/browser/extensions/api/usb/usb_device_resource.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 !ConvertRequestType(transfer.request_type, &request_type) || 180 !ConvertRequestType(transfer.request_type, &request_type) ||
181 !ConvertRecipient(transfer.recipient, &recipient) || 181 !ConvertRecipient(transfer.recipient, &recipient) ||
182 !GetTransferSize(transfer, &size) || !buffer) { 182 !GetTransferSize(transfer, &size) || !buffer) {
183 LOG(INFO) << "Malformed transfer parameters."; 183 LOG(INFO) << "Malformed transfer parameters.";
184 return; 184 return;
185 } 185 }
186 186
187 device_->ControlTransfer(direction, request_type, recipient, transfer.request, 187 device_->ControlTransfer(direction, request_type, recipient, transfer.request,
188 transfer.value, transfer.index, buffer, size, 0, 188 transfer.value, transfer.index, buffer, size, 0,
189 base::Bind(&UsbDeviceResource::TransferComplete, 189 base::Bind(&UsbDeviceResource::TransferComplete,
190 base::Unretained(this), buffer, size)); 190 base::Unretained(this)));
191 } 191 }
192 192
193 void UsbDeviceResource::InterruptTransfer(const GenericTransferInfo& transfer) { 193 void UsbDeviceResource::InterruptTransfer(const GenericTransferInfo& transfer) {
194 size_t size; 194 size_t size;
195 UsbDevice::TransferDirection direction; 195 UsbDevice::TransferDirection direction;
196 scoped_refptr<net::IOBuffer> buffer = CreateBufferForTransfer(transfer); 196 scoped_refptr<net::IOBuffer> buffer = CreateBufferForTransfer(transfer);
197 197
198 if (!ConvertDirection(transfer.direction, &direction) || 198 if (!ConvertDirection(transfer.direction, &direction) ||
199 !GetTransferSize(transfer, &size) || !buffer) { 199 !GetTransferSize(transfer, &size) || !buffer) {
200 LOG(INFO) << "Malformed transfer parameters."; 200 LOG(INFO) << "Malformed transfer parameters.";
201 return; 201 return;
202 } 202 }
203 203
204 device_->InterruptTransfer(direction, transfer.endpoint, buffer, size, 0, 204 device_->InterruptTransfer(direction, transfer.endpoint, buffer, size, 0,
205 base::Bind(&UsbDeviceResource::TransferComplete, 205 base::Bind(&UsbDeviceResource::TransferComplete,
206 base::Unretained(this), buffer, size)); 206 base::Unretained(this)));
207 } 207 }
208 208
209 void UsbDeviceResource::BulkTransfer(const GenericTransferInfo& transfer) { 209 void UsbDeviceResource::BulkTransfer(const GenericTransferInfo& transfer) {
210 size_t size; 210 size_t size;
211 UsbDevice::TransferDirection direction; 211 UsbDevice::TransferDirection direction;
212 scoped_refptr<net::IOBuffer> buffer = CreateBufferForTransfer(transfer); 212 scoped_refptr<net::IOBuffer> buffer = CreateBufferForTransfer(transfer);
213 213
214 if (!ConvertDirection(transfer.direction, &direction) || 214 if (!ConvertDirection(transfer.direction, &direction) ||
215 !GetTransferSize(transfer, &size) || !buffer) { 215 !GetTransferSize(transfer, &size) || !buffer) {
216 LOG(INFO) << "Malformed transfer parameters."; 216 LOG(INFO) << "Malformed transfer parameters.";
217 return; 217 return;
218 } 218 }
219 219
220 device_->BulkTransfer(direction, transfer.endpoint, buffer, size, 0, 220 device_->BulkTransfer(direction, transfer.endpoint, buffer, size, 0,
221 base::Bind(&UsbDeviceResource::TransferComplete, 221 base::Bind(&UsbDeviceResource::TransferComplete,
222 base::Unretained(this), buffer, size)); 222 base::Unretained(this)));
223 } 223 }
224 224
225 void UsbDeviceResource::IsochronousTransfer( 225 void UsbDeviceResource::IsochronousTransfer(
226 const IsochronousTransferInfo& transfer) { 226 const IsochronousTransferInfo& transfer) {
227 const GenericTransferInfo& generic_transfer = transfer.transfer_info; 227 const GenericTransferInfo& generic_transfer = transfer.transfer_info;
228 228
229 size_t size; 229 size_t size;
230 UsbDevice::TransferDirection direction; 230 UsbDevice::TransferDirection direction;
231 scoped_refptr<net::IOBuffer> buffer = CreateBufferForTransfer( 231 scoped_refptr<net::IOBuffer> buffer = CreateBufferForTransfer(
232 generic_transfer); 232 generic_transfer);
233 233
234 if (!ConvertDirection(generic_transfer.direction, &direction) || 234 if (!ConvertDirection(generic_transfer.direction, &direction) ||
235 !GetTransferSize(generic_transfer, &size) || !buffer) { 235 !GetTransferSize(generic_transfer, &size) || !buffer) {
236 LOG(INFO) << "Malformed transfer parameters."; 236 LOG(INFO) << "Malformed transfer parameters.";
237 return; 237 return;
238 } 238 }
239 239
240 device_->IsochronousTransfer(direction, generic_transfer.endpoint, buffer, 240 device_->IsochronousTransfer(direction, generic_transfer.endpoint, buffer,
241 size, transfer.packets, transfer.packet_length, 0, base::Bind( 241 size, transfer.packets, transfer.packet_length, 0, base::Bind(
242 &UsbDeviceResource::TransferComplete, base::Unretained(this), buffer, 242 &UsbDeviceResource::TransferComplete, base::Unretained(this)));
243 size));
244 } 243 }
245 244
246 void UsbDeviceResource::TransferComplete(net::IOBuffer* buffer, 245 void UsbDeviceResource::TransferComplete(UsbTransferStatus status,
247 const size_t length, 246 scoped_refptr<net::IOBuffer> buffer,
248 UsbTransferStatus status) { 247 size_t length) {
249 if (buffer) { 248 base::BinaryValue* response_buffer =
250 base::BinaryValue* const response_buffer = 249 base::BinaryValue::CreateWithCopiedBuffer(buffer->data(), length);
251 base::BinaryValue::CreateWithCopiedBuffer(buffer->data(), length); 250 event_notifier()->OnTransferComplete(status,
252 event_notifier()->OnTransferComplete(status, 251 ConvertTransferStatusToErrorString(status), response_buffer);
253 ConvertTransferStatusToErrorString(status), response_buffer);
254 }
255 } 252 }
256 253
257 } // namespace extensions 254 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/usb/usb_device_resource.h ('k') | chrome/browser/usb/usb_device.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698