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

Commit 40091114 authored by Will Osborn's avatar Will Osborn
Browse files

Fix issue where stylus battery notification shows -1

Bug: 315897903
Fix: 315897903
Flag: NONE Minor fix
Test: Local test on Tangorpro + atest com.android.systemui.stylus.StylusUsiPowerUiTest
Change-Id: I446c24fbe6de5fe87bf5681d91f5d9e402a3f33c
parent fc362ef1
Loading
Loading
Loading
Loading
+7 −5
Original line number Original line Diff line number Diff line
@@ -36,10 +36,10 @@ import com.android.internal.annotations.VisibleForTesting
import com.android.internal.logging.InstanceId
import com.android.internal.logging.InstanceId
import com.android.internal.logging.InstanceIdSequence
import com.android.internal.logging.InstanceIdSequence
import com.android.internal.logging.UiEventLogger
import com.android.internal.logging.UiEventLogger
import com.android.systemui.res.R
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.log.DebugLogger.debugLog
import com.android.systemui.log.DebugLogger.debugLog
import com.android.systemui.res.R
import com.android.systemui.shared.hardware.hasInputDevice
import com.android.systemui.shared.hardware.hasInputDevice
import com.android.systemui.shared.hardware.isAnyStylusSource
import com.android.systemui.shared.hardware.isAnyStylusSource
import com.android.systemui.util.NotificationChannels
import com.android.systemui.util.NotificationChannels
@@ -65,8 +65,10 @@ constructor(
    private var batteryCapacity = 1.0f
    private var batteryCapacity = 1.0f
    private var suppressed = false
    private var suppressed = false
    private var instanceId: InstanceId? = null
    private var instanceId: InstanceId? = null
    @VisibleForTesting var inputDeviceId: Int? = null
    @VisibleForTesting
    var inputDeviceId: Int? = null
        private set
        private set

    @VisibleForTesting var instanceIdSequence = InstanceIdSequence(1 shl 13)
    @VisibleForTesting var instanceIdSequence = InstanceIdSequence(1 shl 13)


    fun init() {
    fun init() {
@@ -113,7 +115,7 @@ constructor(
            inputDeviceId = deviceId
            inputDeviceId = deviceId
            if (batteryState.capacity == batteryCapacity || batteryState.capacity <= 0f)
            if (batteryState.capacity == batteryCapacity || batteryState.capacity <= 0f)
                return@updateBattery
                return@updateBattery

            // Note that batteryState.capacity == NaN will fall through to here
            batteryCapacity = batteryState.capacity
            batteryCapacity = batteryState.capacity
            debugLog {
            debugLog {
                "Updating notification battery state to $batteryCapacity " +
                "Updating notification battery state to $batteryCapacity " +
@@ -172,7 +174,7 @@ constructor(
    }
    }


    private fun isBatteryBelowThreshold(): Boolean {
    private fun isBatteryBelowThreshold(): Boolean {
        return batteryCapacity <= LOW_BATTERY_THRESHOLD
        return !batteryCapacity.isNaN() && batteryCapacity <= LOW_BATTERY_THRESHOLD
    }
    }


    private fun hasConnectedBluetoothStylus(): Boolean {
    private fun hasConnectedBluetoothStylus(): Boolean {
+9 −1
Original line number Original line Diff line number Diff line
@@ -31,8 +31,8 @@ import androidx.test.filters.SmallTest
import com.android.internal.logging.InstanceId
import com.android.internal.logging.InstanceId
import com.android.internal.logging.UiEventLogger
import com.android.internal.logging.UiEventLogger
import com.android.systemui.InstanceIdSequenceFake
import com.android.systemui.InstanceIdSequenceFake
import com.android.systemui.res.R
import com.android.systemui.SysuiTestCase
import com.android.systemui.SysuiTestCase
import com.android.systemui.res.R
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.argumentCaptor
import com.android.systemui.util.mockito.argumentCaptor
import com.android.systemui.util.mockito.eq
import com.android.systemui.util.mockito.eq
@@ -108,6 +108,14 @@ class StylusUsiPowerUiTest : SysuiTestCase() {
        verifyNoMoreInteractions(notificationManager)
        verifyNoMoreInteractions(notificationManager)
    }
    }


    @Test
    fun updateBatteryState_capacityNaN_cancelsNotification() {
        stylusUsiPowerUi.updateBatteryState(0, FixedCapacityBatteryState(Float.NaN))

        verify(notificationManager, times(1)).cancel(R.string.stylus_battery_low_percentage)
        verifyNoMoreInteractions(notificationManager)
    }

    @Test
    @Test
    fun updateBatteryState_capacityBelowThreshold_notifies() {
    fun updateBatteryState_capacityBelowThreshold_notifies() {
        stylusUsiPowerUi.updateBatteryState(0, FixedCapacityBatteryState(0.1f))
        stylusUsiPowerUi.updateBatteryState(0, FixedCapacityBatteryState(0.1f))