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 #include "chrome/browser/extensions/extension_apitest.h" | 6 #include "chrome/browser/extensions/extension_apitest.h" |
7 #include "chrome/browser/ui/browser.h" | 7 #include "chrome/browser/ui/browser.h" |
8 #include "content/public/browser/browser_thread.h" | 8 #include "content/public/browser/browser_thread.h" |
9 #include "net/base/io_buffer.h" | 9 #include "net/base/io_buffer.h" |
10 #include "testing/gmock/include/gmock/gmock.h" | 10 #include "testing/gmock/include/gmock/gmock.h" |
11 | 11 |
12 using testing::AnyNumber; | 12 using testing::AnyNumber; |
13 using testing::_; | 13 using testing::_; |
14 using testing::Return; | 14 using testing::Return; |
15 using content::BrowserThread; | 15 using content::BrowserThread; |
| 16 using usb_service::UsbConfigDescriptor; |
| 17 using usb_service::UsbDevice; |
| 18 using usb_service::UsbDeviceHandle; |
| 19 using usb_service::UsbEndpointDirection; |
| 20 using usb_service::UsbTransferCallback; |
16 | 21 |
17 namespace { | 22 namespace { |
18 | 23 |
19 ACTION_TEMPLATE(InvokeUsbTransferCallback, | 24 ACTION_TEMPLATE(InvokeUsbTransferCallback, |
20 HAS_1_TEMPLATE_PARAMS(int, k), | 25 HAS_1_TEMPLATE_PARAMS(int, k), |
21 AND_1_VALUE_PARAMS(p1)) { | 26 AND_1_VALUE_PARAMS(p1)) { |
22 ::std::tr1::get<k>(args).Run(p1, new net::IOBuffer(1), 1); | 27 ::std::tr1::get<k>(args).Run(p1, new net::IOBuffer(1), 1); |
23 } | 28 } |
24 | 29 |
25 // MSVC erroneously thinks that at least one of the arguments for the transfer | 30 // MSVC erroneously thinks that at least one of the arguments for the transfer |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 IN_PROC_BROWSER_TEST_F(UsbApiTest, DeviceHandling) { | 114 IN_PROC_BROWSER_TEST_F(UsbApiTest, DeviceHandling) { |
110 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(4); | 115 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(4); |
111 ASSERT_TRUE(RunExtensionTest("usb/device_handling")); | 116 ASSERT_TRUE(RunExtensionTest("usb/device_handling")); |
112 } | 117 } |
113 | 118 |
114 IN_PROC_BROWSER_TEST_F(UsbApiTest, ResetDevice) { | 119 IN_PROC_BROWSER_TEST_F(UsbApiTest, ResetDevice) { |
115 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(2); | 120 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(2); |
116 EXPECT_CALL(*mock_device_handle_.get(), ResetDevice()) | 121 EXPECT_CALL(*mock_device_handle_.get(), ResetDevice()) |
117 .WillOnce(Return(true)) | 122 .WillOnce(Return(true)) |
118 .WillOnce(Return(false)); | 123 .WillOnce(Return(false)); |
119 EXPECT_CALL(*mock_device_handle_.get(), | 124 EXPECT_CALL( |
120 InterruptTransfer(USB_DIRECTION_OUTBOUND, 2, _, 1, _, _)) | 125 *mock_device_handle_.get(), |
121 .WillOnce(InvokeUsbTransferCallback<5>(USB_TRANSFER_COMPLETED)); | 126 InterruptTransfer(usb_service::USB_DIRECTION_OUTBOUND, 2, _, 1, _, _)) |
| 127 .WillOnce( |
| 128 InvokeUsbTransferCallback<5>(usb_service::USB_TRANSFER_COMPLETED)); |
122 ASSERT_TRUE(RunExtensionTest("usb/reset_device")); | 129 ASSERT_TRUE(RunExtensionTest("usb/reset_device")); |
123 } | 130 } |
124 | 131 |
125 IN_PROC_BROWSER_TEST_F(UsbApiTest, ListInterfaces) { | 132 IN_PROC_BROWSER_TEST_F(UsbApiTest, ListInterfaces) { |
126 EXPECT_CALL(*mock_device_.get(), ListInterfaces()) | 133 EXPECT_CALL(*mock_device_.get(), ListInterfaces()) |
127 .WillOnce(Return(scoped_refptr<UsbConfigDescriptor>())); | 134 .WillOnce(Return(scoped_refptr<UsbConfigDescriptor>())); |
128 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber()); | 135 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber()); |
129 ASSERT_TRUE(RunExtensionTest("usb/list_interfaces")); | 136 ASSERT_TRUE(RunExtensionTest("usb/list_interfaces")); |
130 } | 137 } |
131 | 138 |
132 IN_PROC_BROWSER_TEST_F(UsbApiTest, TransferEvent) { | 139 IN_PROC_BROWSER_TEST_F(UsbApiTest, TransferEvent) { |
133 EXPECT_CALL(*mock_device_handle_.get(), | 140 EXPECT_CALL(*mock_device_handle_.get(), |
134 ControlTransfer(USB_DIRECTION_OUTBOUND, | 141 ControlTransfer(usb_service::USB_DIRECTION_OUTBOUND, |
135 UsbDeviceHandle::STANDARD, | 142 UsbDeviceHandle::STANDARD, |
136 UsbDeviceHandle::DEVICE, | 143 UsbDeviceHandle::DEVICE, |
137 1, | 144 1, 2, 3, _, 1, _, _)) |
138 2, | 145 .WillOnce( |
139 3, | 146 InvokeUsbTransferCallback<9>(usb_service::USB_TRANSFER_COMPLETED)); |
140 _, | |
141 1, | |
142 _, | |
143 _)) | |
144 .WillOnce(InvokeUsbTransferCallback<9>(USB_TRANSFER_COMPLETED)); | |
145 EXPECT_CALL(*mock_device_handle_.get(), | 147 EXPECT_CALL(*mock_device_handle_.get(), |
146 BulkTransfer(USB_DIRECTION_OUTBOUND, 1, _, 1, _, _)) | 148 BulkTransfer(usb_service::USB_DIRECTION_OUTBOUND, 1, _, 1, _, _)) |
147 .WillOnce(InvokeUsbTransferCallback<5>(USB_TRANSFER_COMPLETED)); | 149 .WillOnce( |
| 150 InvokeUsbTransferCallback<5>(usb_service::USB_TRANSFER_COMPLETED)); |
| 151 EXPECT_CALL( |
| 152 *mock_device_handle_.get(), |
| 153 InterruptTransfer(usb_service::USB_DIRECTION_OUTBOUND, 2, _, 1, _, _)) |
| 154 .WillOnce( |
| 155 InvokeUsbTransferCallback<5>(usb_service::USB_TRANSFER_COMPLETED)); |
148 EXPECT_CALL(*mock_device_handle_.get(), | 156 EXPECT_CALL(*mock_device_handle_.get(), |
149 InterruptTransfer(USB_DIRECTION_OUTBOUND, 2, _, 1, _, _)) | 157 IsochronousTransfer( |
150 .WillOnce(InvokeUsbTransferCallback<5>(USB_TRANSFER_COMPLETED)); | 158 usb_service::USB_DIRECTION_OUTBOUND, 3, _, 1, 1, 1, _, _)) |
151 EXPECT_CALL(*mock_device_handle_.get(), | 159 .WillOnce( |
152 IsochronousTransfer(USB_DIRECTION_OUTBOUND, 3, _, 1, 1, 1, _, _)) | 160 InvokeUsbTransferCallback<7>(usb_service::USB_TRANSFER_COMPLETED)); |
153 .WillOnce(InvokeUsbTransferCallback<7>(USB_TRANSFER_COMPLETED)); | |
154 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber()); | 161 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber()); |
155 ASSERT_TRUE(RunExtensionTest("usb/transfer_event")); | 162 ASSERT_TRUE(RunExtensionTest("usb/transfer_event")); |
156 } | 163 } |
157 | 164 |
158 IN_PROC_BROWSER_TEST_F(UsbApiTest, ZeroLengthTransfer) { | 165 IN_PROC_BROWSER_TEST_F(UsbApiTest, ZeroLengthTransfer) { |
159 EXPECT_CALL(*mock_device_handle_.get(), BulkTransfer(_, _, _, 0, _, _)) | 166 EXPECT_CALL(*mock_device_handle_.get(), BulkTransfer(_, _, _, 0, _, _)) |
160 .WillOnce(InvokeUsbTransferCallback<5>(USB_TRANSFER_COMPLETED)); | 167 .WillOnce( |
| 168 InvokeUsbTransferCallback<5>(usb_service::USB_TRANSFER_COMPLETED)); |
161 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber()); | 169 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber()); |
162 ASSERT_TRUE(RunExtensionTest("usb/zero_length_transfer")); | 170 ASSERT_TRUE(RunExtensionTest("usb/zero_length_transfer")); |
163 } | 171 } |
164 | 172 |
165 IN_PROC_BROWSER_TEST_F(UsbApiTest, TransferFailure) { | 173 IN_PROC_BROWSER_TEST_F(UsbApiTest, TransferFailure) { |
166 EXPECT_CALL(*mock_device_handle_.get(), BulkTransfer(_, _, _, _, _, _)) | 174 EXPECT_CALL(*mock_device_handle_.get(), BulkTransfer(_, _, _, _, _, _)) |
167 .WillOnce(InvokeUsbTransferCallback<5>(USB_TRANSFER_COMPLETED)) | 175 .WillOnce( |
168 .WillOnce(InvokeUsbTransferCallback<5>(USB_TRANSFER_ERROR)) | 176 InvokeUsbTransferCallback<5>(usb_service::USB_TRANSFER_COMPLETED)) |
169 .WillOnce(InvokeUsbTransferCallback<5>(USB_TRANSFER_TIMEOUT)); | 177 .WillOnce(InvokeUsbTransferCallback<5>(usb_service::USB_TRANSFER_ERROR)) |
| 178 .WillOnce( |
| 179 InvokeUsbTransferCallback<5>(usb_service::USB_TRANSFER_TIMEOUT)); |
170 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber()); | 180 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber()); |
171 ASSERT_TRUE(RunExtensionTest("usb/transfer_failure")); | 181 ASSERT_TRUE(RunExtensionTest("usb/transfer_failure")); |
172 } | 182 } |
173 | 183 |
174 IN_PROC_BROWSER_TEST_F(UsbApiTest, InvalidLengthTransfer) { | 184 IN_PROC_BROWSER_TEST_F(UsbApiTest, InvalidLengthTransfer) { |
175 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber()); | 185 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber()); |
176 ASSERT_TRUE(RunExtensionTest("usb/invalid_length_transfer")); | 186 ASSERT_TRUE(RunExtensionTest("usb/invalid_length_transfer")); |
177 } | 187 } |
OLD | NEW |