Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 99801206 authored by Vania Januar's avatar Vania Januar
Browse files

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
parent 5cb5953a
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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)
                }
            }
        }
+24 −0
Original line number Diff line number Diff line
@@ -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()