summaryrefslogtreecommitdiffstats
path: root/chromium/device/usb/mojo/device_impl_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/device/usb/mojo/device_impl_unittest.cc')
-rw-r--r--chromium/device/usb/mojo/device_impl_unittest.cc40
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();