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

Side by Side Diff: extensions/browser/api/usb/usb_apitest.cc

Issue 2821813002: Use Mojo enum types in the C++ USB interface (Closed)
Patch Set: Fix up //device/usb dependencies in //extensions/browser/api Created 3 years, 8 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
OLDNEW
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 <stddef.h> 5 #include <stddef.h>
6 6
7 #include <numeric> 7 #include <numeric>
8 8
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "content/public/browser/browser_thread.h" 10 #include "content/public/browser/browser_thread.h"
(...skipping 10 matching lines...) Expand all
21 #include "net/base/io_buffer.h" 21 #include "net/base/io_buffer.h"
22 22
23 using testing::_; 23 using testing::_;
24 using testing::AnyNumber; 24 using testing::AnyNumber;
25 using testing::Invoke; 25 using testing::Invoke;
26 using testing::Return; 26 using testing::Return;
27 using device::MockDeviceClient; 27 using device::MockDeviceClient;
28 using device::MockUsbDevice; 28 using device::MockUsbDevice;
29 using device::MockUsbDeviceHandle; 29 using device::MockUsbDeviceHandle;
30 using device::UsbConfigDescriptor; 30 using device::UsbConfigDescriptor;
31 using device::UsbControlTransferRecipient;
32 using device::UsbControlTransferType;
31 using device::UsbDeviceHandle; 33 using device::UsbDeviceHandle;
32 using device::UsbEndpointDirection;
33 using device::UsbInterfaceDescriptor; 34 using device::UsbInterfaceDescriptor;
35 using device::UsbTransferDirection;
36 using device::UsbTransferStatus;
34 37
35 namespace extensions { 38 namespace extensions {
36 39
37 namespace { 40 namespace {
38 41
39 ACTION_TEMPLATE(InvokeCallback, 42 ACTION_TEMPLATE(InvokeCallback,
40 HAS_1_TEMPLATE_PARAMS(int, k), 43 HAS_1_TEMPLATE_PARAMS(int, k),
41 AND_1_VALUE_PARAMS(p1)) { 44 AND_1_VALUE_PARAMS(p1)) {
42 ::std::tr1::get<k>(args).Run(p1); 45 ::std::tr1::get<k>(args).Run(p1);
43 } 46 }
44 47
45 ACTION_TEMPLATE(InvokeUsbTransferCallback, 48 ACTION_TEMPLATE(InvokeUsbTransferCallback,
46 HAS_1_TEMPLATE_PARAMS(int, k), 49 HAS_1_TEMPLATE_PARAMS(int, k),
47 AND_1_VALUE_PARAMS(p1)) { 50 AND_1_VALUE_PARAMS(p1)) {
48 net::IOBuffer* io_buffer = nullptr; 51 net::IOBuffer* io_buffer = nullptr;
49 size_t length = 0; 52 size_t length = 0;
50 if (p1 != device::USB_TRANSFER_ERROR) { 53 if (p1 != UsbTransferStatus::TRANSFER_ERROR) {
51 length = 1; 54 length = 1;
52 io_buffer = new net::IOBuffer(length); 55 io_buffer = new net::IOBuffer(length);
53 memset(io_buffer->data(), 0, length); // Avoid uninitialized reads. 56 memset(io_buffer->data(), 0, length); // Avoid uninitialized reads.
54 } 57 }
55 ::std::tr1::get<k>(args).Run(p1, io_buffer, 1); 58 ::std::tr1::get<k>(args).Run(p1, io_buffer, 1);
56 } 59 }
57 60
58 ACTION_P2(InvokeUsbIsochronousTransferOutCallback, 61 ACTION_P2(InvokeUsbIsochronousTransferOutCallback,
59 transferred_length, 62 transferred_length,
60 success_packets) { 63 success_packets) {
61 std::vector<UsbDeviceHandle::IsochronousPacket> packets(arg2.size()); 64 std::vector<UsbDeviceHandle::IsochronousPacket> packets(arg2.size());
62 for (size_t i = 0; i < packets.size(); ++i) { 65 for (size_t i = 0; i < packets.size(); ++i) {
63 packets[i].length = arg2[i]; 66 packets[i].length = arg2[i];
64 if (i < success_packets) { 67 if (i < success_packets) {
65 packets[i].transferred_length = transferred_length; 68 packets[i].transferred_length = transferred_length;
66 packets[i].status = device::USB_TRANSFER_COMPLETED; 69 packets[i].status = UsbTransferStatus::COMPLETED;
67 } else { 70 } else {
68 packets[i].transferred_length = 0; 71 packets[i].transferred_length = 0;
69 packets[i].status = device::USB_TRANSFER_ERROR; 72 packets[i].status = UsbTransferStatus::TRANSFER_ERROR;
70 } 73 }
71 } 74 }
72 arg4.Run(arg1, packets); 75 arg4.Run(arg1, packets);
73 } 76 }
74 77
75 ACTION_P2(InvokeUsbIsochronousTransferInCallback, 78 ACTION_P2(InvokeUsbIsochronousTransferInCallback,
76 transferred_length, 79 transferred_length,
77 success_packets) { 80 success_packets) {
78 size_t total_length = std::accumulate(arg1.begin(), arg1.end(), 0u); 81 size_t total_length = std::accumulate(arg1.begin(), arg1.end(), 0u);
79 net::IOBuffer* io_buffer = new net::IOBuffer(total_length); 82 net::IOBuffer* io_buffer = new net::IOBuffer(total_length);
80 memset(io_buffer->data(), 0, total_length); // Avoid uninitialized reads. 83 memset(io_buffer->data(), 0, total_length); // Avoid uninitialized reads.
81 std::vector<UsbDeviceHandle::IsochronousPacket> packets(arg1.size()); 84 std::vector<UsbDeviceHandle::IsochronousPacket> packets(arg1.size());
82 for (size_t i = 0; i < packets.size(); ++i) { 85 for (size_t i = 0; i < packets.size(); ++i) {
83 packets[i].length = arg1[i]; 86 packets[i].length = arg1[i];
84 packets[i].transferred_length = transferred_length; 87 packets[i].transferred_length = transferred_length;
85 if (i < success_packets) { 88 if (i < success_packets) {
86 packets[i].transferred_length = transferred_length; 89 packets[i].transferred_length = transferred_length;
87 packets[i].status = device::USB_TRANSFER_COMPLETED; 90 packets[i].status = UsbTransferStatus::COMPLETED;
88 } else { 91 } else {
89 packets[i].transferred_length = 0; 92 packets[i].transferred_length = 0;
90 packets[i].status = device::USB_TRANSFER_ERROR; 93 packets[i].status = UsbTransferStatus::TRANSFER_ERROR;
91 } 94 }
92 } 95 }
93 arg3.Run(io_buffer, packets); 96 arg3.Run(io_buffer, packets);
94 } 97 }
95 98
96 ACTION_P(SetConfiguration, mock_device) { 99 ACTION_P(SetConfiguration, mock_device) {
97 mock_device->ActiveConfigurationChanged(arg0); 100 mock_device->ActiveConfigurationChanged(arg0);
98 arg1.Run(true); 101 arg1.Run(true);
99 } 102 }
100 103
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 EXPECT_CALL(*mock_device_handle_, Close()).Times(2); 174 EXPECT_CALL(*mock_device_handle_, Close()).Times(2);
172 ASSERT_TRUE(RunAppTest("api_test/usb/device_handling")); 175 ASSERT_TRUE(RunAppTest("api_test/usb/device_handling"));
173 } 176 }
174 177
175 IN_PROC_BROWSER_TEST_F(UsbApiTest, ResetDevice) { 178 IN_PROC_BROWSER_TEST_F(UsbApiTest, ResetDevice) {
176 EXPECT_CALL(*mock_device_handle_, Close()).Times(2); 179 EXPECT_CALL(*mock_device_handle_, Close()).Times(2);
177 EXPECT_CALL(*mock_device_handle_, ResetDevice(_)) 180 EXPECT_CALL(*mock_device_handle_, ResetDevice(_))
178 .WillOnce(InvokeCallback<0>(true)) 181 .WillOnce(InvokeCallback<0>(true))
179 .WillOnce(InvokeCallback<0>(false)); 182 .WillOnce(InvokeCallback<0>(false));
180 EXPECT_CALL(*mock_device_handle_, 183 EXPECT_CALL(*mock_device_handle_,
181 GenericTransfer(device::USB_DIRECTION_OUTBOUND, 2, _, 1, _, _)) 184 GenericTransfer(UsbTransferDirection::OUTBOUND, 2, _, 1, _, _))
182 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_COMPLETED)); 185 .WillOnce(InvokeUsbTransferCallback<5>(UsbTransferStatus::COMPLETED));
183 ASSERT_TRUE(RunAppTest("api_test/usb/reset_device")); 186 ASSERT_TRUE(RunAppTest("api_test/usb/reset_device"));
184 } 187 }
185 188
186 IN_PROC_BROWSER_TEST_F(UsbApiTest, SetConfiguration) { 189 IN_PROC_BROWSER_TEST_F(UsbApiTest, SetConfiguration) {
187 EXPECT_CALL(*mock_device_handle_, SetConfiguration(1, _)) 190 EXPECT_CALL(*mock_device_handle_, SetConfiguration(1, _))
188 .WillOnce(SetConfiguration(mock_device_.get())); 191 .WillOnce(SetConfiguration(mock_device_.get()));
189 EXPECT_CALL(*mock_device_handle_, Close()).Times(1); 192 EXPECT_CALL(*mock_device_handle_, Close()).Times(1);
190 ASSERT_TRUE(RunAppTest("api_test/usb/set_configuration")); 193 ASSERT_TRUE(RunAppTest("api_test/usb/set_configuration"));
191 } 194 }
192 195
193 IN_PROC_BROWSER_TEST_F(UsbApiTest, ListInterfaces) { 196 IN_PROC_BROWSER_TEST_F(UsbApiTest, ListInterfaces) {
194 mock_device_->ActiveConfigurationChanged(1); 197 mock_device_->ActiveConfigurationChanged(1);
195 EXPECT_CALL(*mock_device_handle_, Close()).Times(1); 198 EXPECT_CALL(*mock_device_handle_, Close()).Times(1);
196 ASSERT_TRUE(RunAppTest("api_test/usb/list_interfaces")); 199 ASSERT_TRUE(RunAppTest("api_test/usb/list_interfaces"));
197 } 200 }
198 201
199 IN_PROC_BROWSER_TEST_F(UsbApiTest, TransferEvent) { 202 IN_PROC_BROWSER_TEST_F(UsbApiTest, TransferEvent) {
200 EXPECT_CALL( 203 EXPECT_CALL(
201 *mock_device_handle_, 204 *mock_device_handle_,
202 ControlTransfer(device::USB_DIRECTION_OUTBOUND, UsbDeviceHandle::STANDARD, 205 ControlTransfer(UsbTransferDirection::OUTBOUND,
203 UsbDeviceHandle::DEVICE, 1, 2, 3, _, 1, _, _)) 206 UsbControlTransferType::STANDARD,
204 .WillOnce(InvokeUsbTransferCallback<9>(device::USB_TRANSFER_COMPLETED)); 207 UsbControlTransferRecipient::DEVICE, 1, 2, 3, _, 1, _, _))
208 .WillOnce(InvokeUsbTransferCallback<9>(UsbTransferStatus::COMPLETED));
205 EXPECT_CALL(*mock_device_handle_, 209 EXPECT_CALL(*mock_device_handle_,
206 GenericTransfer(device::USB_DIRECTION_OUTBOUND, 1, _, 1, _, _)) 210 GenericTransfer(UsbTransferDirection::OUTBOUND, 1, _, 1, _, _))
207 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_COMPLETED)); 211 .WillOnce(InvokeUsbTransferCallback<5>(UsbTransferStatus::COMPLETED));
208 EXPECT_CALL(*mock_device_handle_, 212 EXPECT_CALL(*mock_device_handle_,
209 GenericTransfer(device::USB_DIRECTION_OUTBOUND, 2, _, 1, _, _)) 213 GenericTransfer(UsbTransferDirection::OUTBOUND, 2, _, 1, _, _))
210 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_COMPLETED)); 214 .WillOnce(InvokeUsbTransferCallback<5>(UsbTransferStatus::COMPLETED));
211 EXPECT_CALL(*mock_device_handle_, IsochronousTransferOut(3, _, _, _, _)) 215 EXPECT_CALL(*mock_device_handle_, IsochronousTransferOut(3, _, _, _, _))
212 .WillOnce(InvokeUsbIsochronousTransferOutCallback(1, 1u)); 216 .WillOnce(InvokeUsbIsochronousTransferOutCallback(1, 1u));
213 EXPECT_CALL(*mock_device_handle_, Close()).Times(AnyNumber()); 217 EXPECT_CALL(*mock_device_handle_, Close()).Times(AnyNumber());
214 ASSERT_TRUE(RunAppTest("api_test/usb/transfer_event")); 218 ASSERT_TRUE(RunAppTest("api_test/usb/transfer_event"));
215 } 219 }
216 220
217 IN_PROC_BROWSER_TEST_F(UsbApiTest, ZeroLengthTransfer) { 221 IN_PROC_BROWSER_TEST_F(UsbApiTest, ZeroLengthTransfer) {
218 EXPECT_CALL(*mock_device_handle_, GenericTransfer(_, _, _, 0, _, _)) 222 EXPECT_CALL(*mock_device_handle_, GenericTransfer(_, _, _, 0, _, _))
219 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_COMPLETED)); 223 .WillOnce(InvokeUsbTransferCallback<5>(UsbTransferStatus::COMPLETED));
220 EXPECT_CALL(*mock_device_handle_, Close()).Times(AnyNumber()); 224 EXPECT_CALL(*mock_device_handle_, Close()).Times(AnyNumber());
221 ASSERT_TRUE(RunAppTest("api_test/usb/zero_length_transfer")); 225 ASSERT_TRUE(RunAppTest("api_test/usb/zero_length_transfer"));
222 } 226 }
223 227
224 IN_PROC_BROWSER_TEST_F(UsbApiTest, TransferFailure) { 228 IN_PROC_BROWSER_TEST_F(UsbApiTest, TransferFailure) {
225 EXPECT_CALL(*mock_device_handle_, 229 EXPECT_CALL(*mock_device_handle_,
226 GenericTransfer(device::USB_DIRECTION_OUTBOUND, 1, _, _, _, _)) 230 GenericTransfer(UsbTransferDirection::OUTBOUND, 1, _, _, _, _))
227 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_COMPLETED)) 231 .WillOnce(InvokeUsbTransferCallback<5>(UsbTransferStatus::COMPLETED))
228 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_ERROR)) 232 .WillOnce(InvokeUsbTransferCallback<5>(UsbTransferStatus::TRANSFER_ERROR))
229 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_TIMEOUT)); 233 .WillOnce(InvokeUsbTransferCallback<5>(UsbTransferStatus::TIMEOUT));
230 EXPECT_CALL(*mock_device_handle_, IsochronousTransferIn(2, _, _, _)) 234 EXPECT_CALL(*mock_device_handle_, IsochronousTransferIn(2, _, _, _))
231 .WillOnce(InvokeUsbIsochronousTransferInCallback(8, 10u)) 235 .WillOnce(InvokeUsbIsochronousTransferInCallback(8, 10u))
232 .WillOnce(InvokeUsbIsochronousTransferInCallback(8, 5u)); 236 .WillOnce(InvokeUsbIsochronousTransferInCallback(8, 5u));
233 EXPECT_CALL(*mock_device_handle_, Close()).Times(AnyNumber()); 237 EXPECT_CALL(*mock_device_handle_, Close()).Times(AnyNumber());
234 ASSERT_TRUE(RunAppTest("api_test/usb/transfer_failure")); 238 ASSERT_TRUE(RunAppTest("api_test/usb/transfer_failure"));
235 } 239 }
236 240
237 IN_PROC_BROWSER_TEST_F(UsbApiTest, InvalidLengthTransfer) { 241 IN_PROC_BROWSER_TEST_F(UsbApiTest, InvalidLengthTransfer) {
238 EXPECT_CALL(*mock_device_handle_, Close()).Times(AnyNumber()); 242 EXPECT_CALL(*mock_device_handle_, Close()).Times(AnyNumber());
239 ASSERT_TRUE(RunAppTest("api_test/usb/invalid_length_transfer")); 243 ASSERT_TRUE(RunAppTest("api_test/usb/invalid_length_transfer"));
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 286
283 TestExtensionsAPIClient test_api_client; 287 TestExtensionsAPIClient test_api_client;
284 ASSERT_TRUE(LoadApp("api_test/usb/get_user_selected_devices")); 288 ASSERT_TRUE(LoadApp("api_test/usb/get_user_selected_devices"));
285 ASSERT_TRUE(ready_listener.WaitUntilSatisfied()); 289 ASSERT_TRUE(ready_listener.WaitUntilSatisfied());
286 290
287 device_client_->usb_service()->RemoveDevice(mock_device_); 291 device_client_->usb_service()->RemoveDevice(mock_device_);
288 ASSERT_TRUE(result_listener.WaitUntilSatisfied()); 292 ASSERT_TRUE(result_listener.WaitUntilSatisfied());
289 } 293 }
290 294
291 } // namespace extensions 295 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/browser/api/usb/usb_api.cc ('k') | third_party/WebKit/LayoutTests/usb/resources/webusb-test.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698