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); + } }