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

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

Issue 1665453002: Reland of Update device/usb and its Mojo interface for variable size ISO packets. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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>
8
7 #include "chrome/browser/extensions/extension_apitest.h" 9 #include "chrome/browser/extensions/extension_apitest.h"
8 #include "content/public/browser/browser_thread.h" 10 #include "content/public/browser/browser_thread.h"
9 #include "content/public/test/test_utils.h" 11 #include "content/public/test/test_utils.h"
10 #include "device/core/mock_device_client.h" 12 #include "device/core/mock_device_client.h"
11 #include "device/usb/mock_usb_device.h" 13 #include "device/usb/mock_usb_device.h"
12 #include "device/usb/mock_usb_device_handle.h" 14 #include "device/usb/mock_usb_device_handle.h"
13 #include "device/usb/mock_usb_service.h" 15 #include "device/usb/mock_usb_service.h"
14 #include "extensions/browser/api/device_permissions_prompt.h" 16 #include "extensions/browser/api/device_permissions_prompt.h"
15 #include "extensions/browser/api/usb/usb_api.h" 17 #include "extensions/browser/api/usb/usb_api.h"
16 #include "extensions/shell/browser/shell_extensions_api_client.h" 18 #include "extensions/shell/browser/shell_extensions_api_client.h"
(...skipping 24 matching lines...) Expand all
41 } 43 }
42 44
43 ACTION_TEMPLATE(InvokeUsbTransferCallback, 45 ACTION_TEMPLATE(InvokeUsbTransferCallback,
44 HAS_1_TEMPLATE_PARAMS(int, k), 46 HAS_1_TEMPLATE_PARAMS(int, k),
45 AND_1_VALUE_PARAMS(p1)) { 47 AND_1_VALUE_PARAMS(p1)) {
46 net::IOBuffer* io_buffer = new net::IOBuffer(1); 48 net::IOBuffer* io_buffer = new net::IOBuffer(1);
47 memset(io_buffer->data(), 0, 1); // Avoid uninitialized reads. 49 memset(io_buffer->data(), 0, 1); // Avoid uninitialized reads.
48 ::std::tr1::get<k>(args).Run(p1, io_buffer, 1); 50 ::std::tr1::get<k>(args).Run(p1, io_buffer, 1);
49 } 51 }
50 52
53 ACTION_P2(InvokeUsbIsochronousTransferOutCallback,
54 transferred_length,
55 success_packets) {
56 std::vector<UsbDeviceHandle::IsochronousPacket> packets(arg2.size());
57 for (size_t i = 0; i < packets.size(); ++i) {
58 packets[i].length = arg2[i];
59 if (i < success_packets) {
60 packets[i].transferred_length = transferred_length;
61 packets[i].status = device::USB_TRANSFER_COMPLETED;
62 } else {
63 packets[i].transferred_length = 0;
64 packets[i].status = device::USB_TRANSFER_ERROR;
65 }
66 }
67 arg4.Run(arg1, packets);
68 }
69
70 ACTION_P2(InvokeUsbIsochronousTransferInCallback,
71 transferred_length,
72 success_packets) {
73 size_t total_length = std::accumulate(arg1.begin(), arg1.end(), 0u);
74 net::IOBuffer* io_buffer = new net::IOBuffer(total_length);
75 memset(io_buffer->data(), 0, total_length); // Avoid uninitialized reads.
Reilly Grant (use Gerrit) 2016/02/02 21:14:17 For the record this is the line I had to add in th
76 std::vector<UsbDeviceHandle::IsochronousPacket> packets(arg1.size());
77 for (size_t i = 0; i < packets.size(); ++i) {
78 packets[i].length = arg1[i];
79 packets[i].transferred_length = transferred_length;
80 if (i < success_packets) {
81 packets[i].transferred_length = transferred_length;
82 packets[i].status = device::USB_TRANSFER_COMPLETED;
83 } else {
84 packets[i].transferred_length = 0;
85 packets[i].status = device::USB_TRANSFER_ERROR;
86 }
87 }
88 arg3.Run(io_buffer, packets);
89 }
90
51 class TestDevicePermissionsPrompt 91 class TestDevicePermissionsPrompt
52 : public DevicePermissionsPrompt, 92 : public DevicePermissionsPrompt,
53 public DevicePermissionsPrompt::Prompt::Observer { 93 public DevicePermissionsPrompt::Prompt::Observer {
54 public: 94 public:
55 explicit TestDevicePermissionsPrompt(content::WebContents* web_contents) 95 explicit TestDevicePermissionsPrompt(content::WebContents* web_contents)
56 : DevicePermissionsPrompt(web_contents) {} 96 : DevicePermissionsPrompt(web_contents) {}
57 97
58 void ShowDialog() override { prompt()->SetObserver(this); } 98 void ShowDialog() override { prompt()->SetObserver(this); }
59 99
60 void OnDevicesChanged() override { 100 void OnDevicesChanged() override {
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 1, 198 1,
159 _, 199 _,
160 _)) 200 _))
161 .WillOnce(InvokeUsbTransferCallback<9>(device::USB_TRANSFER_COMPLETED)); 201 .WillOnce(InvokeUsbTransferCallback<9>(device::USB_TRANSFER_COMPLETED));
162 EXPECT_CALL(*mock_device_handle_.get(), 202 EXPECT_CALL(*mock_device_handle_.get(),
163 GenericTransfer(device::USB_DIRECTION_OUTBOUND, 1, _, 1, _, _)) 203 GenericTransfer(device::USB_DIRECTION_OUTBOUND, 1, _, 1, _, _))
164 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_COMPLETED)); 204 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_COMPLETED));
165 EXPECT_CALL(*mock_device_handle_.get(), 205 EXPECT_CALL(*mock_device_handle_.get(),
166 GenericTransfer(device::USB_DIRECTION_OUTBOUND, 2, _, 1, _, _)) 206 GenericTransfer(device::USB_DIRECTION_OUTBOUND, 2, _, 1, _, _))
167 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_COMPLETED)); 207 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_COMPLETED));
168 EXPECT_CALL( 208 EXPECT_CALL(*mock_device_handle_.get(), IsochronousTransferOut(3, _, _, _, _))
169 *mock_device_handle_.get(), 209 .WillOnce(InvokeUsbIsochronousTransferOutCallback(1, 1u));
170 IsochronousTransfer(device::USB_DIRECTION_OUTBOUND, 3, _, 1, 1, 1, _, _))
171 .WillOnce(InvokeUsbTransferCallback<7>(device::USB_TRANSFER_COMPLETED));
172 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber()); 210 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber());
173 ASSERT_TRUE(RunAppTest("api_test/usb/transfer_event")); 211 ASSERT_TRUE(RunAppTest("api_test/usb/transfer_event"));
174 } 212 }
175 213
176 IN_PROC_BROWSER_TEST_F(UsbApiTest, ZeroLengthTransfer) { 214 IN_PROC_BROWSER_TEST_F(UsbApiTest, ZeroLengthTransfer) {
177 EXPECT_CALL(*mock_device_handle_.get(), GenericTransfer(_, _, _, 0, _, _)) 215 EXPECT_CALL(*mock_device_handle_.get(), GenericTransfer(_, _, _, 0, _, _))
178 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_COMPLETED)); 216 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_COMPLETED));
179 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber()); 217 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber());
180 ASSERT_TRUE(RunAppTest("api_test/usb/zero_length_transfer")); 218 ASSERT_TRUE(RunAppTest("api_test/usb/zero_length_transfer"));
181 } 219 }
182 220
183 IN_PROC_BROWSER_TEST_F(UsbApiTest, TransferFailure) { 221 IN_PROC_BROWSER_TEST_F(UsbApiTest, TransferFailure) {
184 EXPECT_CALL(*mock_device_handle_.get(), GenericTransfer(_, _, _, _, _, _)) 222 EXPECT_CALL(*mock_device_handle_.get(),
223 GenericTransfer(device::USB_DIRECTION_OUTBOUND, 1, _, _, _, _))
185 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_COMPLETED)) 224 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_COMPLETED))
186 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_ERROR)) 225 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_ERROR))
187 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_TIMEOUT)); 226 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_TIMEOUT));
227 EXPECT_CALL(*mock_device_handle_.get(), IsochronousTransferIn(2, _, _, _))
228 .WillOnce(InvokeUsbIsochronousTransferInCallback(8, 10u))
229 .WillOnce(InvokeUsbIsochronousTransferInCallback(8, 5u));
188 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber()); 230 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber());
189 ASSERT_TRUE(RunAppTest("api_test/usb/transfer_failure")); 231 ASSERT_TRUE(RunAppTest("api_test/usb/transfer_failure"));
190 } 232 }
191 233
192 IN_PROC_BROWSER_TEST_F(UsbApiTest, InvalidLengthTransfer) { 234 IN_PROC_BROWSER_TEST_F(UsbApiTest, InvalidLengthTransfer) {
193 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber()); 235 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber());
194 ASSERT_TRUE(RunAppTest("api_test/usb/invalid_length_transfer")); 236 ASSERT_TRUE(RunAppTest("api_test/usb/invalid_length_transfer"));
195 } 237 }
196 238
197 IN_PROC_BROWSER_TEST_F(UsbApiTest, InvalidTimeout) { 239 IN_PROC_BROWSER_TEST_F(UsbApiTest, InvalidTimeout) {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 279
238 TestExtensionsAPIClient test_api_client; 280 TestExtensionsAPIClient test_api_client;
239 ASSERT_TRUE(LoadApp("api_test/usb/get_user_selected_devices")); 281 ASSERT_TRUE(LoadApp("api_test/usb/get_user_selected_devices"));
240 ASSERT_TRUE(ready_listener.WaitUntilSatisfied()); 282 ASSERT_TRUE(ready_listener.WaitUntilSatisfied());
241 283
242 device_client_->usb_service()->RemoveDevice(mock_device_); 284 device_client_->usb_service()->RemoveDevice(mock_device_);
243 ASSERT_TRUE(result_listener.WaitUntilSatisfied()); 285 ASSERT_TRUE(result_listener.WaitUntilSatisfied());
244 } 286 }
245 287
246 } // namespace extensions 288 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/browser/api/usb/usb_api.cc ('k') | extensions/test/data/api_test/usb/transfer_event/test.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698