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 "chrome/browser/extensions/extension_apitest.h" | 5 #include "chrome/browser/extensions/extension_apitest.h" |
6 #include "chrome/browser/ui/browser.h" | 6 #include "chrome/browser/ui/browser.h" |
7 #include "components/usb_service/usb_service.h" | |
8 #include "content/public/browser/browser_thread.h" | 7 #include "content/public/browser/browser_thread.h" |
9 #include "content/public/test/test_utils.h" | 8 #include "content/public/test/test_utils.h" |
| 9 #include "device/usb/usb_service.h" |
10 #include "extensions/browser/api/usb/usb_api.h" | 10 #include "extensions/browser/api/usb/usb_api.h" |
11 #include "net/base/io_buffer.h" | 11 #include "net/base/io_buffer.h" |
12 #include "testing/gmock/include/gmock/gmock.h" | 12 #include "testing/gmock/include/gmock/gmock.h" |
13 | 13 |
14 using testing::AnyNumber; | 14 using testing::AnyNumber; |
15 using testing::_; | 15 using testing::_; |
16 using testing::Return; | 16 using testing::Return; |
17 using content::BrowserThread; | 17 using content::BrowserThread; |
18 using usb_service::UsbConfigDescriptor; | 18 using device::UsbConfigDescriptor; |
19 using usb_service::UsbDevice; | 19 using device::UsbDevice; |
20 using usb_service::UsbDeviceHandle; | 20 using device::UsbDeviceHandle; |
21 using usb_service::UsbEndpointDirection; | 21 using device::UsbEndpointDirection; |
22 using usb_service::UsbInterfaceDescriptor; | 22 using device::UsbInterfaceDescriptor; |
23 using usb_service::UsbService; | 23 using device::UsbService; |
24 using usb_service::UsbTransferCallback; | 24 using device::UsbTransferCallback; |
25 | 25 |
26 namespace { | 26 namespace { |
27 | 27 |
28 ACTION_TEMPLATE(InvokeUsbTransferCallback, | 28 ACTION_TEMPLATE(InvokeUsbTransferCallback, |
29 HAS_1_TEMPLATE_PARAMS(int, k), | 29 HAS_1_TEMPLATE_PARAMS(int, k), |
30 AND_1_VALUE_PARAMS(p1)) { | 30 AND_1_VALUE_PARAMS(p1)) { |
31 net::IOBuffer* io_buffer = new net::IOBuffer(1); | 31 net::IOBuffer* io_buffer = new net::IOBuffer(1); |
32 memset(io_buffer->data(), 0, 1); // Avoid uninitialized reads. | 32 memset(io_buffer->data(), 0, 1); // Avoid uninitialized reads. |
33 ::std::tr1::get<k>(args).Run(p1, io_buffer, 1); | 33 ::std::tr1::get<k>(args).Run(p1, io_buffer, 1); |
34 } | 34 } |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
211 IN_PROC_BROWSER_TEST_F(UsbApiTest, DeviceHandling) { | 211 IN_PROC_BROWSER_TEST_F(UsbApiTest, DeviceHandling) { |
212 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(4); | 212 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(4); |
213 ASSERT_TRUE(RunExtensionTest("usb/device_handling")); | 213 ASSERT_TRUE(RunExtensionTest("usb/device_handling")); |
214 } | 214 } |
215 | 215 |
216 IN_PROC_BROWSER_TEST_F(UsbApiTest, ResetDevice) { | 216 IN_PROC_BROWSER_TEST_F(UsbApiTest, ResetDevice) { |
217 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(2); | 217 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(2); |
218 EXPECT_CALL(*mock_device_handle_.get(), ResetDevice()) | 218 EXPECT_CALL(*mock_device_handle_.get(), ResetDevice()) |
219 .WillOnce(Return(true)) | 219 .WillOnce(Return(true)) |
220 .WillOnce(Return(false)); | 220 .WillOnce(Return(false)); |
221 EXPECT_CALL( | 221 EXPECT_CALL(*mock_device_handle_.get(), |
222 *mock_device_handle_.get(), | 222 InterruptTransfer(device::USB_DIRECTION_OUTBOUND, 2, _, 1, _, _)) |
223 InterruptTransfer(usb_service::USB_DIRECTION_OUTBOUND, 2, _, 1, _, _)) | 223 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_COMPLETED)); |
224 .WillOnce( | |
225 InvokeUsbTransferCallback<5>(usb_service::USB_TRANSFER_COMPLETED)); | |
226 ASSERT_TRUE(RunExtensionTest("usb/reset_device")); | 224 ASSERT_TRUE(RunExtensionTest("usb/reset_device")); |
227 } | 225 } |
228 | 226 |
229 IN_PROC_BROWSER_TEST_F(UsbApiTest, ListInterfaces) { | 227 IN_PROC_BROWSER_TEST_F(UsbApiTest, ListInterfaces) { |
230 scoped_refptr<MockUsbConfigDescriptor> mock_descriptor = | 228 scoped_refptr<MockUsbConfigDescriptor> mock_descriptor = |
231 new MockUsbConfigDescriptor(); | 229 new MockUsbConfigDescriptor(); |
232 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber()); | 230 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber()); |
233 EXPECT_CALL(*mock_descriptor.get(), GetNumInterfaces()).WillOnce(Return(0)); | 231 EXPECT_CALL(*mock_descriptor.get(), GetNumInterfaces()).WillOnce(Return(0)); |
234 EXPECT_CALL(*mock_device_.get(), ListInterfaces()) | 232 EXPECT_CALL(*mock_device_.get(), ListInterfaces()) |
235 .WillOnce(Return(mock_descriptor)); | 233 .WillOnce(Return(mock_descriptor)); |
236 ASSERT_TRUE(RunExtensionTest("usb/list_interfaces")); | 234 ASSERT_TRUE(RunExtensionTest("usb/list_interfaces")); |
237 } | 235 } |
238 | 236 |
239 IN_PROC_BROWSER_TEST_F(UsbApiTest, TransferEvent) { | 237 IN_PROC_BROWSER_TEST_F(UsbApiTest, TransferEvent) { |
240 EXPECT_CALL(*mock_device_handle_.get(), | 238 EXPECT_CALL(*mock_device_handle_.get(), |
241 ControlTransfer(usb_service::USB_DIRECTION_OUTBOUND, | 239 ControlTransfer(device::USB_DIRECTION_OUTBOUND, |
242 UsbDeviceHandle::STANDARD, | 240 UsbDeviceHandle::STANDARD, |
243 UsbDeviceHandle::DEVICE, | 241 UsbDeviceHandle::DEVICE, |
244 1, | 242 1, |
245 2, | 243 2, |
246 3, | 244 3, |
247 _, | 245 _, |
248 1, | 246 1, |
249 _, | 247 _, |
250 _)) | 248 _)) |
251 .WillOnce( | 249 .WillOnce(InvokeUsbTransferCallback<9>(device::USB_TRANSFER_COMPLETED)); |
252 InvokeUsbTransferCallback<9>(usb_service::USB_TRANSFER_COMPLETED)); | |
253 EXPECT_CALL(*mock_device_handle_.get(), | 250 EXPECT_CALL(*mock_device_handle_.get(), |
254 BulkTransfer(usb_service::USB_DIRECTION_OUTBOUND, 1, _, 1, _, _)) | 251 BulkTransfer(device::USB_DIRECTION_OUTBOUND, 1, _, 1, _, _)) |
255 .WillOnce( | 252 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_COMPLETED)); |
256 InvokeUsbTransferCallback<5>(usb_service::USB_TRANSFER_COMPLETED)); | 253 EXPECT_CALL(*mock_device_handle_.get(), |
| 254 InterruptTransfer(device::USB_DIRECTION_OUTBOUND, 2, _, 1, _, _)) |
| 255 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_COMPLETED)); |
257 EXPECT_CALL( | 256 EXPECT_CALL( |
258 *mock_device_handle_.get(), | 257 *mock_device_handle_.get(), |
259 InterruptTransfer(usb_service::USB_DIRECTION_OUTBOUND, 2, _, 1, _, _)) | 258 IsochronousTransfer(device::USB_DIRECTION_OUTBOUND, 3, _, 1, 1, 1, _, _)) |
260 .WillOnce( | 259 .WillOnce(InvokeUsbTransferCallback<7>(device::USB_TRANSFER_COMPLETED)); |
261 InvokeUsbTransferCallback<5>(usb_service::USB_TRANSFER_COMPLETED)); | |
262 EXPECT_CALL(*mock_device_handle_.get(), | |
263 IsochronousTransfer( | |
264 usb_service::USB_DIRECTION_OUTBOUND, 3, _, 1, 1, 1, _, _)) | |
265 .WillOnce( | |
266 InvokeUsbTransferCallback<7>(usb_service::USB_TRANSFER_COMPLETED)); | |
267 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber()); | 260 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber()); |
268 ASSERT_TRUE(RunExtensionTest("usb/transfer_event")); | 261 ASSERT_TRUE(RunExtensionTest("usb/transfer_event")); |
269 } | 262 } |
270 | 263 |
271 IN_PROC_BROWSER_TEST_F(UsbApiTest, ZeroLengthTransfer) { | 264 IN_PROC_BROWSER_TEST_F(UsbApiTest, ZeroLengthTransfer) { |
272 EXPECT_CALL(*mock_device_handle_.get(), BulkTransfer(_, _, _, 0, _, _)) | 265 EXPECT_CALL(*mock_device_handle_.get(), BulkTransfer(_, _, _, 0, _, _)) |
273 .WillOnce( | 266 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_COMPLETED)); |
274 InvokeUsbTransferCallback<5>(usb_service::USB_TRANSFER_COMPLETED)); | |
275 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber()); | 267 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber()); |
276 ASSERT_TRUE(RunExtensionTest("usb/zero_length_transfer")); | 268 ASSERT_TRUE(RunExtensionTest("usb/zero_length_transfer")); |
277 } | 269 } |
278 | 270 |
279 IN_PROC_BROWSER_TEST_F(UsbApiTest, TransferFailure) { | 271 IN_PROC_BROWSER_TEST_F(UsbApiTest, TransferFailure) { |
280 EXPECT_CALL(*mock_device_handle_.get(), BulkTransfer(_, _, _, _, _, _)) | 272 EXPECT_CALL(*mock_device_handle_.get(), BulkTransfer(_, _, _, _, _, _)) |
281 .WillOnce( | 273 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_COMPLETED)) |
282 InvokeUsbTransferCallback<5>(usb_service::USB_TRANSFER_COMPLETED)) | 274 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_ERROR)) |
283 .WillOnce(InvokeUsbTransferCallback<5>(usb_service::USB_TRANSFER_ERROR)) | 275 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_TIMEOUT)); |
284 .WillOnce( | |
285 InvokeUsbTransferCallback<5>(usb_service::USB_TRANSFER_TIMEOUT)); | |
286 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber()); | 276 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber()); |
287 ASSERT_TRUE(RunExtensionTest("usb/transfer_failure")); | 277 ASSERT_TRUE(RunExtensionTest("usb/transfer_failure")); |
288 } | 278 } |
289 | 279 |
290 IN_PROC_BROWSER_TEST_F(UsbApiTest, InvalidLengthTransfer) { | 280 IN_PROC_BROWSER_TEST_F(UsbApiTest, InvalidLengthTransfer) { |
291 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber()); | 281 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber()); |
292 ASSERT_TRUE(RunExtensionTest("usb/invalid_length_transfer")); | 282 ASSERT_TRUE(RunExtensionTest("usb/invalid_length_transfer")); |
293 } | 283 } |
OLD | NEW |