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

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

Unsuppress USI low battery notifications when new stylus used.

This handles an edge case where a stylus with a different
vendor/product ID is used after a previous stylus has received a
low battery notification, and that notification has been dismissed.
Unsuppressing the notification means that if the new stylus's
battery is also low, a new notification will be sent.

Note that this means if a stylus has the same vendor/product ID
as the previous one, there is no way to differentiate them.

Bug: 262689155
Test: atest StylusUsiPowerStartableTest
Change-Id: Ia8a661a131e241216ecf9aaff89e36cb40860f91
parent f207b4d3
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -39,6 +39,17 @@ constructor(
    private val featureFlags: FeatureFlags,
) : CoreStartable, StylusManager.StylusCallback, StylusManager.StylusBatteryCallback {

    override fun onStylusAdded(deviceId: Int) {
        // On some devices, the addition of a new internal stylus indicates the use of a
        // USI stylus with a different vendor/product ID. We would therefore like to reset
        // the battery notification suppression, in case the user has dismissed a low battery
        // notification of the previous stylus.
        val device = inputManager.getInputDevice(deviceId) ?: return
        if (!device.isExternal) {
            stylusUsiPowerUi.updateSuppression(false)
        }
    }

    override fun onStylusBluetoothConnected(deviceId: Int, btAddress: String) {
        stylusUsiPowerUi.refresh()
    }
+14 −0
Original line number Diff line number Diff line
@@ -91,6 +91,20 @@ class StylusUsiPowerStartableTest : SysuiTestCase() {
        verify(stylusUsiPowerUi, times(1)).init()
    }

    @Test
    fun onStylusAdded_internal_updatesNotificationSuppression() {
        startable.onStylusAdded(STYLUS_DEVICE_ID)

        verify(stylusUsiPowerUi, times(1)).updateSuppression(false)
    }

    @Test
    fun onStylusAdded_external_noop() {
        startable.onStylusAdded(EXTERNAL_DEVICE_ID)

        verifyZeroInteractions(stylusUsiPowerUi)
    }

    @Test
    fun onStylusBluetoothConnected_refreshesNotification() {
        startable.onStylusBluetoothConnected(STYLUS_DEVICE_ID, "ANY")