From d8ee6665f74b6ead5cd504555ecb5a2b61f795b8 Mon Sep 17 00:00:00 2001 From: Vania Januar Date: Wed, 16 Aug 2023 15:54:00 +0100 Subject: [PATCH] Listen to USB_STATE events in the StylusUsbFirmwareController. Test: UsbStylusBroadcastReceiverTest Bug: 288850921 Change-Id: I415e5ca04d371a235eff31327b086d568bcc00f0 --- .../stylus/UsbStylusBroadcastReceiver.java | 1 + .../UsbStylusBroadcastReceiverTest.java | 28 +++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/src/com/android/settings/connecteddevice/stylus/UsbStylusBroadcastReceiver.java b/src/com/android/settings/connecteddevice/stylus/UsbStylusBroadcastReceiver.java index 01662500443..41d88d2691d 100644 --- a/src/com/android/settings/connecteddevice/stylus/UsbStylusBroadcastReceiver.java +++ b/src/com/android/settings/connecteddevice/stylus/UsbStylusBroadcastReceiver.java @@ -41,6 +41,7 @@ public class UsbStylusBroadcastReceiver extends BroadcastReceiver { final IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED); intentFilter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED); + intentFilter.addAction(UsbManager.ACTION_USB_STATE); final Intent intent = mContext.registerReceiver(this, intentFilter); if (intent != null) { onReceive(mContext, intent); diff --git a/tests/robotests/src/com/android/settings/connecteddevice/stylus/UsbStylusBroadcastReceiverTest.java b/tests/robotests/src/com/android/settings/connecteddevice/stylus/UsbStylusBroadcastReceiverTest.java index ccaefb25523..03279ee48e3 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/stylus/UsbStylusBroadcastReceiverTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/stylus/UsbStylusBroadcastReceiverTest.java @@ -95,4 +95,32 @@ public class UsbStylusBroadcastReceiverTest { verifyNoMoreInteractions(mListener); } + + @Test + public void onReceive_usbDeviceStateStylus_invokeCallback() { + when(mFeatureFactory.mStylusFeatureProvider.isUsbFirmwareUpdateEnabled(any())) + .thenReturn(true); + final UsbDevice usbDevice = mock(UsbDevice.class); + final Intent intent = new Intent(); + intent.setAction(UsbManager.ACTION_USB_STATE); + intent.putExtra(UsbManager.EXTRA_DEVICE, usbDevice); + + mReceiver.onReceive(mContext, intent); + + verify(mListener).onUsbStylusConnectionChanged(usbDevice, false); + } + + @Test + public void onReceive_usbDeviceStateNotStylus_doesNotInvokeCallback() { + when(mFeatureFactory.mStylusFeatureProvider.isUsbFirmwareUpdateEnabled(any())) + .thenReturn(false); + final UsbDevice usbDevice = mock(UsbDevice.class); + final Intent intent = new Intent(); + intent.setAction(UsbManager.ACTION_USB_STATE); + intent.putExtra(UsbManager.EXTRA_DEVICE, usbDevice); + + mReceiver.onReceive(mContext, intent); + + verifyNoMoreInteractions(mListener); + } }