| OLD | NEW |
| 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_api.h" | 5 #include "chrome/browser/extensions/api/usb/usb_api.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 61 static const char* kErrorMalformedParameters = "Error parsing parameters."; | 61 static const char* kErrorMalformedParameters = "Error parsing parameters."; |
| 62 static const char* kErrorNoDevice = "No such device."; | 62 static const char* kErrorNoDevice = "No such device."; |
| 63 static const char* kErrorPermissionDenied = | 63 static const char* kErrorPermissionDenied = |
| 64 "Permission to access device was denied"; | 64 "Permission to access device was denied"; |
| 65 | 65 |
| 66 static UsbDevice* device_for_test_ = NULL; | 66 static UsbDevice* device_for_test_ = NULL; |
| 67 | 67 |
| 68 static bool ConvertDirection(const Direction& input, | 68 static bool ConvertDirection(const Direction& input, |
| 69 UsbDevice::TransferDirection* output) { | 69 UsbDevice::TransferDirection* output) { |
| 70 switch (input) { | 70 switch (input) { |
| 71 case usb::USB_DIRECTION_IN: | 71 case usb::DIRECTION_IN: |
| 72 *output = UsbDevice::INBOUND; | 72 *output = UsbDevice::INBOUND; |
| 73 return true; | 73 return true; |
| 74 case usb::USB_DIRECTION_OUT: | 74 case usb::DIRECTION_OUT: |
| 75 *output = UsbDevice::OUTBOUND; | 75 *output = UsbDevice::OUTBOUND; |
| 76 return true; | 76 return true; |
| 77 default: | 77 default: |
| 78 return false; | 78 return false; |
| 79 } | 79 } |
| 80 NOTREACHED(); | 80 NOTREACHED(); |
| 81 return false; | 81 return false; |
| 82 } | 82 } |
| 83 | 83 |
| 84 static bool ConvertRequestType(const RequestType& input, | 84 static bool ConvertRequestType(const RequestType& input, |
| 85 UsbDevice::TransferRequestType* output) { | 85 UsbDevice::TransferRequestType* output) { |
| 86 switch (input) { | 86 switch (input) { |
| 87 case usb::USB_REQUEST_TYPE_STANDARD: | 87 case usb::REQUEST_TYPE_STANDARD: |
| 88 *output = UsbDevice::STANDARD; | 88 *output = UsbDevice::STANDARD; |
| 89 return true; | 89 return true; |
| 90 case usb::USB_REQUEST_TYPE_CLASS: | 90 case usb::REQUEST_TYPE_CLASS: |
| 91 *output = UsbDevice::CLASS; | 91 *output = UsbDevice::CLASS; |
| 92 return true; | 92 return true; |
| 93 case usb::USB_REQUEST_TYPE_VENDOR: | 93 case usb::REQUEST_TYPE_VENDOR: |
| 94 *output = UsbDevice::VENDOR; | 94 *output = UsbDevice::VENDOR; |
| 95 return true; | 95 return true; |
| 96 case usb::USB_REQUEST_TYPE_RESERVED: | 96 case usb::REQUEST_TYPE_RESERVED: |
| 97 *output = UsbDevice::RESERVED; | 97 *output = UsbDevice::RESERVED; |
| 98 return true; | 98 return true; |
| 99 default: | 99 default: |
| 100 return false; | 100 return false; |
| 101 } | 101 } |
| 102 NOTREACHED(); | 102 NOTREACHED(); |
| 103 return false; | 103 return false; |
| 104 } | 104 } |
| 105 | 105 |
| 106 static bool ConvertRecipient(const Recipient& input, | 106 static bool ConvertRecipient(const Recipient& input, |
| 107 UsbDevice::TransferRecipient* output) { | 107 UsbDevice::TransferRecipient* output) { |
| 108 switch (input) { | 108 switch (input) { |
| 109 case usb::USB_RECIPIENT_DEVICE: | 109 case usb::RECIPIENT_DEVICE: |
| 110 *output = UsbDevice::DEVICE; | 110 *output = UsbDevice::DEVICE; |
| 111 return true; | 111 return true; |
| 112 case usb::USB_RECIPIENT_INTERFACE: | 112 case usb::RECIPIENT_INTERFACE: |
| 113 *output = UsbDevice::INTERFACE; | 113 *output = UsbDevice::INTERFACE; |
| 114 return true; | 114 return true; |
| 115 case usb::USB_RECIPIENT_ENDPOINT: | 115 case usb::RECIPIENT_ENDPOINT: |
| 116 *output = UsbDevice::ENDPOINT; | 116 *output = UsbDevice::ENDPOINT; |
| 117 return true; | 117 return true; |
| 118 case usb::USB_RECIPIENT_OTHER: | 118 case usb::RECIPIENT_OTHER: |
| 119 *output = UsbDevice::OTHER; | 119 *output = UsbDevice::OTHER; |
| 120 return true; | 120 return true; |
| 121 default: | 121 default: |
| 122 return false; | 122 return false; |
| 123 } | 123 } |
| 124 NOTREACHED(); | 124 NOTREACHED(); |
| 125 return false; | 125 return false; |
| 126 } | 126 } |
| 127 | 127 |
| 128 template<class T> | 128 template<class T> |
| 129 static bool GetTransferSize(const T& input, size_t* output) { | 129 static bool GetTransferSize(const T& input, size_t* output) { |
| 130 if (input.direction == usb::USB_DIRECTION_IN) { | 130 if (input.direction == usb::DIRECTION_IN) { |
| 131 const int* length = input.length.get(); | 131 const int* length = input.length.get(); |
| 132 if (length) { | 132 if (length) { |
| 133 *output = *length; | 133 *output = *length; |
| 134 return true; | 134 return true; |
| 135 } | 135 } |
| 136 } else if (input.direction == usb::USB_DIRECTION_OUT) { | 136 } else if (input.direction == usb::DIRECTION_OUT) { |
| 137 if (input.data.get()) { | 137 if (input.data.get()) { |
| 138 *output = input.data->size(); | 138 *output = input.data->size(); |
| 139 return true; | 139 return true; |
| 140 } | 140 } |
| 141 } | 141 } |
| 142 return false; | 142 return false; |
| 143 } | 143 } |
| 144 | 144 |
| 145 template<class T> | 145 template<class T> |
| 146 static scoped_refptr<net::IOBuffer> CreateBufferForTransfer(const T& input) { | 146 static scoped_refptr<net::IOBuffer> CreateBufferForTransfer(const T& input) { |
| (...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 605 CompleteWithError(kErrorNoDevice); | 605 CompleteWithError(kErrorNoDevice); |
| 606 return; | 606 return; |
| 607 } | 607 } |
| 608 | 608 |
| 609 device->device()->IsochronousTransfer(direction, generic_transfer.endpoint, | 609 device->device()->IsochronousTransfer(direction, generic_transfer.endpoint, |
| 610 buffer, size, transfer.packets, transfer.packet_length, 0, base::Bind( | 610 buffer, size, transfer.packets, transfer.packet_length, 0, base::Bind( |
| 611 &UsbIsochronousTransferFunction::OnCompleted, this)); | 611 &UsbIsochronousTransferFunction::OnCompleted, this)); |
| 612 } | 612 } |
| 613 | 613 |
| 614 } // namespace extensions | 614 } // namespace extensions |
| OLD | NEW |