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

Side by Side Diff: device/usb/usb_device_handle_unittest.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
« no previous file with comments | « device/usb/usb_device_handle_impl.cc ('k') | device/usb/usb_device_handle_usbfs.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "device/usb/usb_device_handle.h" 5 #include "device/usb/usb_device_handle.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <memory> 9 #include <memory>
10 10
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 EXPECT_TRUE(interface); 140 EXPECT_TRUE(interface);
141 EXPECT_EQ(0, interface->interface_number); 141 EXPECT_EQ(0, interface->interface_number);
142 interface = handle->FindInterfaceByEndpoint(0x01); 142 interface = handle->FindInterfaceByEndpoint(0x01);
143 EXPECT_TRUE(interface); 143 EXPECT_TRUE(interface);
144 EXPECT_EQ(0, interface->interface_number); 144 EXPECT_EQ(0, interface->interface_number);
145 EXPECT_FALSE(handle->FindInterfaceByEndpoint(0x82)); 145 EXPECT_FALSE(handle->FindInterfaceByEndpoint(0x82));
146 EXPECT_FALSE(handle->FindInterfaceByEndpoint(0x02)); 146 EXPECT_FALSE(handle->FindInterfaceByEndpoint(0x02));
147 147
148 scoped_refptr<net::IOBufferWithSize> in_buffer(new net::IOBufferWithSize(64)); 148 scoped_refptr<net::IOBufferWithSize> in_buffer(new net::IOBufferWithSize(64));
149 TestCompletionCallback in_completion; 149 TestCompletionCallback in_completion;
150 handle->GenericTransfer(USB_DIRECTION_INBOUND, 0x81, in_buffer.get(), 150 handle->GenericTransfer(UsbTransferDirection::INBOUND, 0x81, in_buffer.get(),
151 in_buffer->size(), 151 in_buffer->size(),
152 5000, // 5 second timeout 152 5000, // 5 second timeout
153 in_completion.callback()); 153 in_completion.callback());
154 154
155 scoped_refptr<net::IOBufferWithSize> out_buffer( 155 scoped_refptr<net::IOBufferWithSize> out_buffer(
156 new net::IOBufferWithSize(in_buffer->size())); 156 new net::IOBufferWithSize(in_buffer->size()));
157 TestCompletionCallback out_completion; 157 TestCompletionCallback out_completion;
158 for (int i = 0; i < out_buffer->size(); ++i) { 158 for (int i = 0; i < out_buffer->size(); ++i) {
159 out_buffer->data()[i] = i; 159 out_buffer->data()[i] = i;
160 } 160 }
161 161
162 handle->GenericTransfer(USB_DIRECTION_OUTBOUND, 0x01, out_buffer.get(), 162 handle->GenericTransfer(UsbTransferDirection::OUTBOUND, 0x01,
163 out_buffer->size(), 163 out_buffer.get(), out_buffer->size(),
164 5000, // 5 second timeout 164 5000, // 5 second timeout
165 out_completion.callback()); 165 out_completion.callback());
166 out_completion.WaitForResult(); 166 out_completion.WaitForResult();
167 ASSERT_EQ(USB_TRANSFER_COMPLETED, out_completion.status()); 167 ASSERT_EQ(UsbTransferStatus::COMPLETED, out_completion.status());
168 EXPECT_EQ(static_cast<size_t>(out_buffer->size()), 168 EXPECT_EQ(static_cast<size_t>(out_buffer->size()),
169 out_completion.transferred()); 169 out_completion.transferred());
170 170
171 in_completion.WaitForResult(); 171 in_completion.WaitForResult();
172 ASSERT_EQ(USB_TRANSFER_COMPLETED, in_completion.status()); 172 ASSERT_EQ(UsbTransferStatus::COMPLETED, in_completion.status());
173 EXPECT_EQ(static_cast<size_t>(in_buffer->size()), 173 EXPECT_EQ(static_cast<size_t>(in_buffer->size()),
174 in_completion.transferred()); 174 in_completion.transferred());
175 for (size_t i = 0; i < in_completion.transferred(); ++i) { 175 for (size_t i = 0; i < in_completion.transferred(); ++i) {
176 EXPECT_EQ(out_buffer->data()[i], in_buffer->data()[i]) 176 EXPECT_EQ(out_buffer->data()[i], in_buffer->data()[i])
177 << "Mismatch at index " << i << "."; 177 << "Mismatch at index " << i << ".";
178 } 178 }
179 179
180 TestResultCallback release_interface; 180 TestResultCallback release_interface;
181 handle->ReleaseInterface(0, release_interface.callback()); 181 handle->ReleaseInterface(0, release_interface.callback());
182 ASSERT_TRUE(release_interface.WaitForResult()); 182 ASSERT_TRUE(release_interface.WaitForResult());
(...skipping 26 matching lines...) Expand all
209 handle->FindInterfaceByEndpoint(0x82); 209 handle->FindInterfaceByEndpoint(0x82);
210 EXPECT_TRUE(interface); 210 EXPECT_TRUE(interface);
211 EXPECT_EQ(1, interface->interface_number); 211 EXPECT_EQ(1, interface->interface_number);
212 interface = handle->FindInterfaceByEndpoint(0x02); 212 interface = handle->FindInterfaceByEndpoint(0x02);
213 EXPECT_TRUE(interface); 213 EXPECT_TRUE(interface);
214 EXPECT_EQ(1, interface->interface_number); 214 EXPECT_EQ(1, interface->interface_number);
215 215
216 scoped_refptr<net::IOBufferWithSize> in_buffer( 216 scoped_refptr<net::IOBufferWithSize> in_buffer(
217 new net::IOBufferWithSize(512)); 217 new net::IOBufferWithSize(512));
218 TestCompletionCallback in_completion; 218 TestCompletionCallback in_completion;
219 handle->GenericTransfer(USB_DIRECTION_INBOUND, 0x82, in_buffer.get(), 219 handle->GenericTransfer(UsbTransferDirection::INBOUND, 0x82, in_buffer.get(),
220 in_buffer->size(), 220 in_buffer->size(),
221 5000, // 5 second timeout 221 5000, // 5 second timeout
222 in_completion.callback()); 222 in_completion.callback());
223 223
224 scoped_refptr<net::IOBufferWithSize> out_buffer( 224 scoped_refptr<net::IOBufferWithSize> out_buffer(
225 new net::IOBufferWithSize(in_buffer->size())); 225 new net::IOBufferWithSize(in_buffer->size()));
226 TestCompletionCallback out_completion; 226 TestCompletionCallback out_completion;
227 for (int i = 0; i < out_buffer->size(); ++i) { 227 for (int i = 0; i < out_buffer->size(); ++i) {
228 out_buffer->data()[i] = i; 228 out_buffer->data()[i] = i;
229 } 229 }
230 230
231 handle->GenericTransfer(USB_DIRECTION_OUTBOUND, 0x02, out_buffer.get(), 231 handle->GenericTransfer(UsbTransferDirection::OUTBOUND, 0x02,
232 out_buffer->size(), 232 out_buffer.get(), out_buffer->size(),
233 5000, // 5 second timeout 233 5000, // 5 second timeout
234 out_completion.callback()); 234 out_completion.callback());
235 out_completion.WaitForResult(); 235 out_completion.WaitForResult();
236 ASSERT_EQ(USB_TRANSFER_COMPLETED, out_completion.status()); 236 ASSERT_EQ(UsbTransferStatus::COMPLETED, out_completion.status());
237 EXPECT_EQ(static_cast<size_t>(out_buffer->size()), 237 EXPECT_EQ(static_cast<size_t>(out_buffer->size()),
238 out_completion.transferred()); 238 out_completion.transferred());
239 239
240 in_completion.WaitForResult(); 240 in_completion.WaitForResult();
241 ASSERT_EQ(USB_TRANSFER_COMPLETED, in_completion.status()); 241 ASSERT_EQ(UsbTransferStatus::COMPLETED, in_completion.status());
242 EXPECT_EQ(static_cast<size_t>(in_buffer->size()), 242 EXPECT_EQ(static_cast<size_t>(in_buffer->size()),
243 in_completion.transferred()); 243 in_completion.transferred());
244 for (size_t i = 0; i < in_completion.transferred(); ++i) { 244 for (size_t i = 0; i < in_completion.transferred(); ++i) {
245 EXPECT_EQ(out_buffer->data()[i], in_buffer->data()[i]) 245 EXPECT_EQ(out_buffer->data()[i], in_buffer->data()[i])
246 << "Mismatch at index " << i << "."; 246 << "Mismatch at index " << i << ".";
247 } 247 }
248 248
249 TestResultCallback release_interface; 249 TestResultCallback release_interface;
250 handle->ReleaseInterface(1, release_interface.callback()); 250 handle->ReleaseInterface(1, release_interface.callback());
251 ASSERT_TRUE(release_interface.WaitForResult()); 251 ASSERT_TRUE(release_interface.WaitForResult());
252 252
253 handle->Close(); 253 handle->Close();
254 } 254 }
255 255
256 TEST_F(UsbDeviceHandleTest, ControlTransfer) { 256 TEST_F(UsbDeviceHandleTest, ControlTransfer) {
257 if (!UsbTestGadget::IsTestEnabled()) 257 if (!UsbTestGadget::IsTestEnabled())
258 return; 258 return;
259 259
260 std::unique_ptr<UsbTestGadget> gadget = 260 std::unique_ptr<UsbTestGadget> gadget =
261 UsbTestGadget::Claim(io_thread_->task_runner()); 261 UsbTestGadget::Claim(io_thread_->task_runner());
262 ASSERT_TRUE(gadget.get()); 262 ASSERT_TRUE(gadget.get());
263 263
264 TestOpenCallback open_device; 264 TestOpenCallback open_device;
265 gadget->GetDevice()->Open(open_device.callback()); 265 gadget->GetDevice()->Open(open_device.callback());
266 scoped_refptr<UsbDeviceHandle> handle = open_device.WaitForResult(); 266 scoped_refptr<UsbDeviceHandle> handle = open_device.WaitForResult();
267 ASSERT_TRUE(handle.get()); 267 ASSERT_TRUE(handle.get());
268 268
269 scoped_refptr<net::IOBufferWithSize> buffer(new net::IOBufferWithSize(255)); 269 scoped_refptr<net::IOBufferWithSize> buffer(new net::IOBufferWithSize(255));
270 TestCompletionCallback completion; 270 TestCompletionCallback completion;
271 handle->ControlTransfer(USB_DIRECTION_INBOUND, UsbDeviceHandle::STANDARD, 271 handle->ControlTransfer(
272 UsbDeviceHandle::DEVICE, 0x06, 0x0301, 0x0409, buffer, 272 UsbTransferDirection::INBOUND, UsbControlTransferType::STANDARD,
273 buffer->size(), 0, completion.callback()); 273 UsbControlTransferRecipient::DEVICE, 0x06, 0x0301, 0x0409, buffer,
274 buffer->size(), 0, completion.callback());
274 completion.WaitForResult(); 275 completion.WaitForResult();
275 ASSERT_EQ(USB_TRANSFER_COMPLETED, completion.status()); 276 ASSERT_EQ(UsbTransferStatus::COMPLETED, completion.status());
276 const char expected_str[] = "\x18\x03G\0o\0o\0g\0l\0e\0 \0I\0n\0c\0.\0"; 277 const char expected_str[] = "\x18\x03G\0o\0o\0g\0l\0e\0 \0I\0n\0c\0.\0";
277 EXPECT_EQ(sizeof(expected_str) - 1, completion.transferred()); 278 EXPECT_EQ(sizeof(expected_str) - 1, completion.transferred());
278 for (size_t i = 0; i < completion.transferred(); ++i) { 279 for (size_t i = 0; i < completion.transferred(); ++i) {
279 EXPECT_EQ(expected_str[i], buffer->data()[i]) << "Mismatch at index " << i 280 EXPECT_EQ(expected_str[i], buffer->data()[i]) << "Mismatch at index " << i
280 << "."; 281 << ".";
281 } 282 }
282 283
283 handle->Close(); 284 handle->Close();
284 } 285 }
285 286
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 gadget->GetDevice()->Open(open_device.callback()); 328 gadget->GetDevice()->Open(open_device.callback());
328 scoped_refptr<UsbDeviceHandle> handle = open_device.WaitForResult(); 329 scoped_refptr<UsbDeviceHandle> handle = open_device.WaitForResult();
329 ASSERT_TRUE(handle.get()); 330 ASSERT_TRUE(handle.get());
330 331
331 TestResultCallback claim_interface; 332 TestResultCallback claim_interface;
332 handle->ClaimInterface(1, claim_interface.callback()); 333 handle->ClaimInterface(1, claim_interface.callback());
333 ASSERT_TRUE(claim_interface.WaitForResult()); 334 ASSERT_TRUE(claim_interface.WaitForResult());
334 335
335 scoped_refptr<net::IOBufferWithSize> buffer(new net::IOBufferWithSize(512)); 336 scoped_refptr<net::IOBufferWithSize> buffer(new net::IOBufferWithSize(512));
336 TestCompletionCallback completion; 337 TestCompletionCallback completion;
337 handle->GenericTransfer(USB_DIRECTION_INBOUND, 0x82, buffer.get(), 338 handle->GenericTransfer(UsbTransferDirection::INBOUND, 0x82, buffer.get(),
338 buffer->size(), 339 buffer->size(),
339 5000, // 5 second timeout 340 5000, // 5 second timeout
340 completion.callback()); 341 completion.callback());
341 342
342 handle->Close(); 343 handle->Close();
343 completion.WaitForResult(); 344 completion.WaitForResult();
344 ASSERT_EQ(USB_TRANSFER_CANCELLED, completion.status()); 345 ASSERT_EQ(UsbTransferStatus::CANCELLED, completion.status());
345 } 346 }
346 347
347 TEST_F(UsbDeviceHandleTest, CancelOnDisconnect) { 348 TEST_F(UsbDeviceHandleTest, CancelOnDisconnect) {
348 if (!UsbTestGadget::IsTestEnabled()) { 349 if (!UsbTestGadget::IsTestEnabled()) {
349 return; 350 return;
350 } 351 }
351 352
352 std::unique_ptr<UsbTestGadget> gadget = 353 std::unique_ptr<UsbTestGadget> gadget =
353 UsbTestGadget::Claim(io_thread_->task_runner()); 354 UsbTestGadget::Claim(io_thread_->task_runner());
354 ASSERT_TRUE(gadget.get()); 355 ASSERT_TRUE(gadget.get());
355 ASSERT_TRUE(gadget->SetType(UsbTestGadget::ECHO)); 356 ASSERT_TRUE(gadget->SetType(UsbTestGadget::ECHO));
356 357
357 TestOpenCallback open_device; 358 TestOpenCallback open_device;
358 gadget->GetDevice()->Open(open_device.callback()); 359 gadget->GetDevice()->Open(open_device.callback());
359 scoped_refptr<UsbDeviceHandle> handle = open_device.WaitForResult(); 360 scoped_refptr<UsbDeviceHandle> handle = open_device.WaitForResult();
360 ASSERT_TRUE(handle.get()); 361 ASSERT_TRUE(handle.get());
361 362
362 TestResultCallback claim_interface; 363 TestResultCallback claim_interface;
363 handle->ClaimInterface(1, claim_interface.callback()); 364 handle->ClaimInterface(1, claim_interface.callback());
364 ASSERT_TRUE(claim_interface.WaitForResult()); 365 ASSERT_TRUE(claim_interface.WaitForResult());
365 366
366 scoped_refptr<net::IOBufferWithSize> buffer(new net::IOBufferWithSize(512)); 367 scoped_refptr<net::IOBufferWithSize> buffer(new net::IOBufferWithSize(512));
367 TestCompletionCallback completion; 368 TestCompletionCallback completion;
368 handle->GenericTransfer(USB_DIRECTION_INBOUND, 0x82, buffer.get(), 369 handle->GenericTransfer(UsbTransferDirection::INBOUND, 0x82, buffer.get(),
369 buffer->size(), 370 buffer->size(),
370 5000, // 5 second timeout 371 5000, // 5 second timeout
371 completion.callback()); 372 completion.callback());
372 373
373 ASSERT_TRUE(gadget->Disconnect()); 374 ASSERT_TRUE(gadget->Disconnect());
374 completion.WaitForResult(); 375 completion.WaitForResult();
375 ASSERT_EQ(USB_TRANSFER_DISCONNECT, completion.status()); 376 ASSERT_EQ(UsbTransferStatus::DISCONNECT, completion.status());
376 377
377 handle->Close(); 378 handle->Close();
378 } 379 }
379 380
380 TEST_F(UsbDeviceHandleTest, Timeout) { 381 TEST_F(UsbDeviceHandleTest, Timeout) {
381 if (!UsbTestGadget::IsTestEnabled()) { 382 if (!UsbTestGadget::IsTestEnabled()) {
382 return; 383 return;
383 } 384 }
384 385
385 std::unique_ptr<UsbTestGadget> gadget = 386 std::unique_ptr<UsbTestGadget> gadget =
386 UsbTestGadget::Claim(io_thread_->task_runner()); 387 UsbTestGadget::Claim(io_thread_->task_runner());
387 ASSERT_TRUE(gadget.get()); 388 ASSERT_TRUE(gadget.get());
388 ASSERT_TRUE(gadget->SetType(UsbTestGadget::ECHO)); 389 ASSERT_TRUE(gadget->SetType(UsbTestGadget::ECHO));
389 390
390 TestOpenCallback open_device; 391 TestOpenCallback open_device;
391 gadget->GetDevice()->Open(open_device.callback()); 392 gadget->GetDevice()->Open(open_device.callback());
392 scoped_refptr<UsbDeviceHandle> handle = open_device.WaitForResult(); 393 scoped_refptr<UsbDeviceHandle> handle = open_device.WaitForResult();
393 ASSERT_TRUE(handle.get()); 394 ASSERT_TRUE(handle.get());
394 395
395 TestResultCallback claim_interface; 396 TestResultCallback claim_interface;
396 handle->ClaimInterface(1, claim_interface.callback()); 397 handle->ClaimInterface(1, claim_interface.callback());
397 ASSERT_TRUE(claim_interface.WaitForResult()); 398 ASSERT_TRUE(claim_interface.WaitForResult());
398 399
399 scoped_refptr<net::IOBufferWithSize> buffer(new net::IOBufferWithSize(512)); 400 scoped_refptr<net::IOBufferWithSize> buffer(new net::IOBufferWithSize(512));
400 TestCompletionCallback completion; 401 TestCompletionCallback completion;
401 handle->GenericTransfer(USB_DIRECTION_INBOUND, 0x82, buffer.get(), 402 handle->GenericTransfer(UsbTransferDirection::INBOUND, 0x82, buffer.get(),
402 buffer->size(), 403 buffer->size(),
403 10, // 10 millisecond timeout 404 10, // 10 millisecond timeout
404 completion.callback()); 405 completion.callback());
405 406
406 completion.WaitForResult(); 407 completion.WaitForResult();
407 ASSERT_EQ(USB_TRANSFER_TIMEOUT, completion.status()); 408 ASSERT_EQ(UsbTransferStatus::TIMEOUT, completion.status());
408 409
409 handle->Close(); 410 handle->Close();
410 } 411 }
411 412
412 } // namespace 413 } // namespace
413 414
414 } // namespace device 415 } // namespace device
OLDNEW
« no previous file with comments | « device/usb/usb_device_handle_impl.cc ('k') | device/usb/usb_device_handle_usbfs.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698