StylusManager registers bluetooth devices present before start.

In case SystemUI crashes and StylusManager restarts, StylusManager will
now detect currently connected bluetooth devices at start.

Bug: 277738343
Test: StylusManagerTest
Change-Id: If94992e14ab8a0025062fe44ac5c54d6c21a7627
This commit is contained in:
Vania Januar
2023-04-12 11:57:42 +01:00
parent 5cb5953aad
commit 99801206ab
2 changed files with 26 additions and 0 deletions

View File

@@ -353,6 +353,8 @@ constructor(
// before CoreStartables run, and will not be removed.
// In many cases, it reports the battery level of the stylus.
registerBatteryListener(deviceId)
} else if (device.bluetoothAddress != null) {
onStylusBluetoothConnected(deviceId, device.bluetoothAddress)
}
}
}

View File

@@ -101,9 +101,12 @@ class StylusManagerTest : SysuiTestCase() {
whenever(stylusDevice.supportsSource(InputDevice.SOURCE_STYLUS)).thenReturn(true)
whenever(btStylusDevice.supportsSource(InputDevice.SOURCE_STYLUS)).thenReturn(true)
whenever(btStylusDevice.isExternal).thenReturn(true)
whenever(stylusDevice.bluetoothAddress).thenReturn(null)
whenever(btStylusDevice.bluetoothAddress).thenReturn(STYLUS_BT_ADDRESS)
whenever(btStylusDevice.batteryState).thenReturn(batteryState)
whenever(stylusDevice.batteryState).thenReturn(batteryState)
whenever(batteryState.capacity).thenReturn(0.5f)
@@ -147,6 +150,27 @@ class StylusManagerTest : SysuiTestCase() {
verify(inputManager, times(1)).registerInputDeviceListener(any(), any())
}
@Test
fun startListener_hasNotStarted_registersExistingBluetoothDevice() {
whenever(inputManager.inputDeviceIds).thenReturn(intArrayOf(BT_STYLUS_DEVICE_ID))
stylusManager =
StylusManager(
mContext,
inputManager,
bluetoothAdapter,
handler,
EXECUTOR,
featureFlags,
uiEventLogger
)
stylusManager.startListener()
verify(bluetoothAdapter, times(1))
.addOnMetadataChangedListener(bluetoothDevice, EXECUTOR, stylusManager)
}
@Test
fun startListener_hasStarted_doesNothing() {
stylusManager.startListener()