Chromium Code Reviews| 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 "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 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 109 transferred_ = transferred; | 109 transferred_ = transferred; |
| 110 run_loop_.Quit(); | 110 run_loop_.Quit(); |
| 111 } | 111 } |
| 112 | 112 |
| 113 const UsbDeviceHandle::TransferCallback callback_; | 113 const UsbDeviceHandle::TransferCallback callback_; |
| 114 base::RunLoop run_loop_; | 114 base::RunLoop run_loop_; |
| 115 UsbTransferStatus status_; | 115 UsbTransferStatus status_; |
| 116 size_t transferred_; | 116 size_t transferred_; |
| 117 }; | 117 }; |
| 118 | 118 |
| 119 void ExpectTimeoutAndClose(scoped_refptr<UsbDeviceHandle> handle, | |
| 120 const base::Closure& quit_closure, | |
| 121 UsbTransferStatus status, | |
| 122 scoped_refptr<net::IOBuffer> buffer, | |
| 123 size_t transferred) { | |
| 124 EXPECT_EQ(status, UsbTransferStatus::TIMEOUT); | |
|
mcasas
2017/04/24 21:19:23
nit: EXPECT_EQ(expected, actual) [1] so reverse t
Reilly Grant (use Gerrit)
2017/04/24 22:14:00
Done.
| |
| 125 handle->Close(); | |
| 126 quit_closure.Run(); | |
| 127 } | |
| 128 | |
| 119 TEST_F(UsbDeviceHandleTest, InterruptTransfer) { | 129 TEST_F(UsbDeviceHandleTest, InterruptTransfer) { |
| 120 if (!UsbTestGadget::IsTestEnabled()) { | 130 if (!UsbTestGadget::IsTestEnabled()) { |
| 121 return; | 131 return; |
| 122 } | 132 } |
| 123 | 133 |
| 124 std::unique_ptr<UsbTestGadget> gadget = | 134 std::unique_ptr<UsbTestGadget> gadget = |
| 125 UsbTestGadget::Claim(io_thread_->task_runner()); | 135 UsbTestGadget::Claim(io_thread_->task_runner()); |
| 126 ASSERT_TRUE(gadget.get()); | 136 ASSERT_TRUE(gadget.get()); |
| 127 ASSERT_TRUE(gadget->SetType(UsbTestGadget::ECHO)); | 137 ASSERT_TRUE(gadget->SetType(UsbTestGadget::ECHO)); |
| 128 | 138 |
| (...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 403 buffer->size(), | 413 buffer->size(), |
| 404 10, // 10 millisecond timeout | 414 10, // 10 millisecond timeout |
| 405 completion.callback()); | 415 completion.callback()); |
| 406 | 416 |
| 407 completion.WaitForResult(); | 417 completion.WaitForResult(); |
| 408 ASSERT_EQ(UsbTransferStatus::TIMEOUT, completion.status()); | 418 ASSERT_EQ(UsbTransferStatus::TIMEOUT, completion.status()); |
| 409 | 419 |
| 410 handle->Close(); | 420 handle->Close(); |
| 411 } | 421 } |
| 412 | 422 |
| 423 TEST_F(UsbDeviceHandleTest, CloseReentrancy) { | |
| 424 if (!UsbTestGadget::IsTestEnabled()) | |
| 425 return; | |
| 426 | |
| 427 std::unique_ptr<UsbTestGadget> gadget = | |
| 428 UsbTestGadget::Claim(io_thread_->task_runner()); | |
| 429 ASSERT_TRUE(gadget.get()); | |
| 430 ASSERT_TRUE(gadget->SetType(UsbTestGadget::ECHO)); | |
| 431 | |
| 432 TestOpenCallback open_device; | |
| 433 gadget->GetDevice()->Open(open_device.callback()); | |
| 434 scoped_refptr<UsbDeviceHandle> handle = open_device.WaitForResult(); | |
| 435 ASSERT_TRUE(handle.get()); | |
| 436 | |
| 437 TestResultCallback claim_interface; | |
| 438 handle->ClaimInterface(1, claim_interface.callback()); | |
| 439 ASSERT_TRUE(claim_interface.WaitForResult()); | |
|
mcasas
2017/04/24 21:19:22
nit: This preamble l.424-439 looks very similar to
Reilly Grant (use Gerrit)
2017/04/24 22:14:00
The preamble varies subtly depending on what kind
| |
| 440 | |
| 441 base::RunLoop run_loop; | |
| 442 scoped_refptr<net::IOBufferWithSize> buffer(new net::IOBufferWithSize(512)); | |
| 443 handle->GenericTransfer( | |
| 444 UsbTransferDirection::INBOUND, 0x82, buffer.get(), buffer->size(), | |
| 445 10, // 10 millisecond timeout | |
| 446 base::Bind(&ExpectTimeoutAndClose, handle, run_loop.QuitClosure())); | |
| 447 // Drop handle so that the completion callback holds the last reference. | |
| 448 handle = nullptr; | |
| 449 run_loop.Run(); | |
| 450 } | |
| 451 | |
| 413 } // namespace | 452 } // namespace |
| 414 | 453 |
| 415 } // namespace device | 454 } // namespace device |
| OLD | NEW |