Handling case when device returned from InputManager is null

getInputDevice is @Nullable so we should handle that case and indicate the device is not valid keyboard

Fixes: 278065638
Test: emitsDisconnected_whenDeviceWithIdDoesNotExist
Change-Id: I7e267cc6809b12457de22173bf6450b355b5ab63
This commit is contained in:
Michal Brzezinski
2023-04-18 18:33:18 +01:00
parent 50ab78c234
commit d887c7d175
2 changed files with 12 additions and 1 deletions

View File

@@ -106,7 +106,7 @@ constructor(
}
private fun isPhysicalFullKeyboard(deviceId: Int): Boolean {
val device = inputManager.getInputDevice(deviceId)
val device = inputManager.getInputDevice(deviceId) ?: return false
return !device.isVirtual && device.isFullKeyboard
}

View File

@@ -95,6 +95,16 @@ class KeyboardRepositoryTest : SysuiTestCase() {
assertThat(isKeyboardConnected).isTrue()
}
@Test
fun emitsDisconnected_whenDeviceWithIdDoesNotExist() =
testScope.runTest {
val deviceListener = captureDeviceListener()
val isKeyboardConnected by collectLastValue(underTest.keyboardConnected)
deviceListener.onInputDeviceAdded(NULL_DEVICE_ID)
assertThat(isKeyboardConnected).isFalse()
}
@Test
fun emitsDisconnected_whenKeyboardDisconnects() =
testScope.runTest {
@@ -172,6 +182,7 @@ class KeyboardRepositoryTest : SysuiTestCase() {
private const val VIRTUAL_FULL_KEYBOARD_ID = 2
private const val PHYSICAL_NOT_FULL_KEYBOARD_ID = 3
private const val ANOTHER_PHYSICAL_FULL_KEYBOARD_ID = 4
private const val NULL_DEVICE_ID = 5
private val INPUT_DEVICES_MAP: Map<Int, InputDevice> =
mapOf(