diff options
Diffstat (limited to 'chromium/device/usb/mojo/device_impl_unittest.cc')
-rw-r--r-- | chromium/device/usb/mojo/device_impl_unittest.cc | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/chromium/device/usb/mojo/device_impl_unittest.cc b/chromium/device/usb/mojo/device_impl_unittest.cc index 7fbcedaad85..0c707a06d0a 100644 --- a/chromium/device/usb/mojo/device_impl_unittest.cc +++ b/chromium/device/usb/mojo/device_impl_unittest.cc @@ -462,6 +462,46 @@ TEST_F(USBDeviceImplTest, Open) { EXPECT_CALL(permission_provider(), DecrementConnectionCount()); } +TEST_F(USBDeviceImplTest, OpenFailure) { + MockUsbDeviceClient device_client; + UsbDevicePtr device = + GetMockDeviceProxy(device_client.CreateInterfacePtrAndBind()); + + EXPECT_CALL(mock_device(), OpenInternal(_)) + .WillOnce(Invoke([](UsbDevice::OpenCallback& callback) { + std::move(callback).Run(nullptr); + })); + EXPECT_CALL(device_client, OnDeviceOpened()).Times(0); + EXPECT_CALL(device_client, OnDeviceClosed()).Times(0); + + base::RunLoop loop; + device->Open(base::BindOnce(&ExpectOpenAndThen, + mojom::UsbOpenDeviceError::ACCESS_DENIED, + loop.QuitClosure())); + loop.Run(); +} + +TEST_F(USBDeviceImplTest, OpenDelayedFailure) { + MockUsbDeviceClient device_client; + UsbDevicePtr device = + GetMockDeviceProxy(device_client.CreateInterfacePtrAndBind()); + + UsbDevice::OpenCallback saved_callback; + EXPECT_CALL(mock_device(), OpenInternal(_)) + .WillOnce(Invoke([&saved_callback](UsbDevice::OpenCallback& callback) { + saved_callback = std::move(callback); + })); + EXPECT_CALL(device_client, OnDeviceOpened()).Times(0); + EXPECT_CALL(device_client, OnDeviceClosed()).Times(0); + + device->Open( + base::BindOnce([](mojom::UsbOpenDeviceError result) { NOTREACHED(); })); + device.reset(); + base::RunLoop().RunUntilIdle(); + + std::move(saved_callback).Run(nullptr); +} + TEST_F(USBDeviceImplTest, Close) { UsbDevicePtr device = GetMockDeviceProxy(); |