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

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

Issue 1618393004: 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: Document use of ErrorWithArguments. 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 std::vector<UsbDeviceHandle::IsochronousPacket> packets(arg1.size());
76 for (size_t i = 0; i < packets.size(); ++i) {
77 packets[i].length = arg1[i];
78 packets[i].transferred_length = transferred_length;
79 if (i < success_packets) {
80 packets[i].transferred_length = transferred_length;
81 packets[i].status = device::USB_TRANSFER_COMPLETED;
82 } else {
83 packets[i].transferred_length = 0;
84 packets[i].status = device::USB_TRANSFER_ERROR;
85 }
86 }
87 arg3.Run(io_buffer, packets);
88 }
89
51 class TestDevicePermissionsPrompt 90 class TestDevicePermissionsPrompt
52 : public DevicePermissionsPrompt, 91 : public DevicePermissionsPrompt,
53 public DevicePermissionsPrompt::Prompt::Observer { 92 public DevicePermissionsPrompt::Prompt::Observer {
54 public: 93 public:
55 explicit TestDevicePermissionsPrompt(content::WebContents* web_contents) 94 explicit TestDevicePermissionsPrompt(content::WebContents* web_contents)
56 : DevicePermissionsPrompt(web_contents) {} 95 : DevicePermissionsPrompt(web_contents) {}
57 96
58 void ShowDialog() override { prompt()->SetObserver(this); } 97 void ShowDialog() override { prompt()->SetObserver(this); }
59 98
60 void OnDevicesChanged() override { 99 void OnDevicesChanged() override {
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 1, 197 1,
159 _, 198 _,
160 _)) 199 _))
161 .WillOnce(InvokeUsbTransferCallback<9>(device::USB_TRANSFER_COMPLETED)); 200 .WillOnce(InvokeUsbTransferCallback<9>(device::USB_TRANSFER_COMPLETED));
162 EXPECT_CALL(*mock_device_handle_.get(), 201 EXPECT_CALL(*mock_device_handle_.get(),
163 GenericTransfer(device::USB_DIRECTION_OUTBOUND, 1, _, 1, _, _)) 202 GenericTransfer(device::USB_DIRECTION_OUTBOUND, 1, _, 1, _, _))
164 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_COMPLETED)); 203 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_COMPLETED));
165 EXPECT_CALL(*mock_device_handle_.get(), 204 EXPECT_CALL(*mock_device_handle_.get(),
166 GenericTransfer(device::USB_DIRECTION_OUTBOUND, 2, _, 1, _, _)) 205 GenericTransfer(device::USB_DIRECTION_OUTBOUND, 2, _, 1, _, _))
167 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_COMPLETED)); 206 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_COMPLETED));
168 EXPECT_CALL( 207 EXPECT_CALL(*mock_device_handle_.get(), IsochronousTransferOut(3, _, _, _, _))
169 *mock_device_handle_.get(), 208 .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()); 209 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber());
173 ASSERT_TRUE(RunAppTest("api_test/usb/transfer_event")); 210 ASSERT_TRUE(RunAppTest("api_test/usb/transfer_event"));
174 } 211 }
175 212
176 IN_PROC_BROWSER_TEST_F(UsbApiTest, ZeroLengthTransfer) { 213 IN_PROC_BROWSER_TEST_F(UsbApiTest, ZeroLengthTransfer) {
177 EXPECT_CALL(*mock_device_handle_.get(), GenericTransfer(_, _, _, 0, _, _)) 214 EXPECT_CALL(*mock_device_handle_.get(), GenericTransfer(_, _, _, 0, _, _))
178 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_COMPLETED)); 215 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_COMPLETED));
179 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber()); 216 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber());
180 ASSERT_TRUE(RunAppTest("api_test/usb/zero_length_transfer")); 217 ASSERT_TRUE(RunAppTest("api_test/usb/zero_length_transfer"));
181 } 218 }
182 219
183 IN_PROC_BROWSER_TEST_F(UsbApiTest, TransferFailure) { 220 IN_PROC_BROWSER_TEST_F(UsbApiTest, TransferFailure) {
184 EXPECT_CALL(*mock_device_handle_.get(), GenericTransfer(_, _, _, _, _, _)) 221 EXPECT_CALL(*mock_device_handle_.get(),
222 GenericTransfer(device::USB_DIRECTION_OUTBOUND, 1, _, _, _, _))
185 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_COMPLETED)) 223 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_COMPLETED))
186 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_ERROR)) 224 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_ERROR))
187 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_TIMEOUT)); 225 .WillOnce(InvokeUsbTransferCallback<5>(device::USB_TRANSFER_TIMEOUT));
226 EXPECT_CALL(*mock_device_handle_.get(), IsochronousTransferIn(2, _, _, _))
227 .WillOnce(InvokeUsbIsochronousTransferInCallback(8, 10u))
228 .WillOnce(InvokeUsbIsochronousTransferInCallback(8, 5u));
188 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber()); 229 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber());
189 ASSERT_TRUE(RunAppTest("api_test/usb/transfer_failure")); 230 ASSERT_TRUE(RunAppTest("api_test/usb/transfer_failure"));
190 } 231 }
191 232
192 IN_PROC_BROWSER_TEST_F(UsbApiTest, InvalidLengthTransfer) { 233 IN_PROC_BROWSER_TEST_F(UsbApiTest, InvalidLengthTransfer) {
193 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber()); 234 EXPECT_CALL(*mock_device_handle_.get(), Close()).Times(AnyNumber());
194 ASSERT_TRUE(RunAppTest("api_test/usb/invalid_length_transfer")); 235 ASSERT_TRUE(RunAppTest("api_test/usb/invalid_length_transfer"));
195 } 236 }
196 237
197 IN_PROC_BROWSER_TEST_F(UsbApiTest, InvalidTimeout) { 238 IN_PROC_BROWSER_TEST_F(UsbApiTest, InvalidTimeout) {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 278
238 TestExtensionsAPIClient test_api_client; 279 TestExtensionsAPIClient test_api_client;
239 ASSERT_TRUE(LoadApp("api_test/usb/get_user_selected_devices")); 280 ASSERT_TRUE(LoadApp("api_test/usb/get_user_selected_devices"));
240 ASSERT_TRUE(ready_listener.WaitUntilSatisfied()); 281 ASSERT_TRUE(ready_listener.WaitUntilSatisfied());
241 282
242 device_client_->usb_service()->RemoveDevice(mock_device_); 283 device_client_->usb_service()->RemoveDevice(mock_device_);
243 ASSERT_TRUE(result_listener.WaitUntilSatisfied()); 284 ASSERT_TRUE(result_listener.WaitUntilSatisfied());
244 } 285 }
245 286
246 } // namespace extensions 287 } // 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