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

Commit 4df46bbb authored by Vania Januar's avatar Vania Januar Committed by Automerger Merge Worker
Browse files

Merge "Strings for USI low battery notifications." into tm-qpr-dev am: dc8aebcd am: f419a509

parents a345bc5a f419a509
Loading
Loading
Loading
Loading
+5 −2
Original line number Original line Diff line number Diff line
@@ -2891,6 +2891,9 @@
    <!-- Text for education page content description for unfolded animation. [CHAR_LIMIT=NONE] -->
    <!-- Text for education page content description for unfolded animation. [CHAR_LIMIT=NONE] -->
    <string name="rear_display_accessibility_unfolded_animation">Foldable device being flipped around</string>
    <string name="rear_display_accessibility_unfolded_animation">Foldable device being flipped around</string>


    <!-- Title for notification of low stylus battery. [CHAR_LIMIT=NONE] -->
    <!-- Title for notification of low stylus battery with percentage. "percentage" is
    <string name="stylus_battery_low">Stylus battery low</string>
        the value of the battery capacity remaining [CHAR LIMIT=none]-->
    <string name="stylus_battery_low_percentage"><xliff:g id="percentage" example="16%">%s</xliff:g> battery remaining</string>
    <!-- Subtitle for the notification sent when a stylus battery is low. [CHAR LIMIT=none]-->
    <string name="stylus_battery_low_subtitle">Connect your stylus to a charger</string>
</resources>
</resources>
+4 −4
Original line number Original line Diff line number Diff line
@@ -123,13 +123,13 @@ constructor(
                .setSmallIcon(R.drawable.ic_power_low)
                .setSmallIcon(R.drawable.ic_power_low)
                .setDeleteIntent(getPendingBroadcast(ACTION_DISMISSED_LOW_BATTERY))
                .setDeleteIntent(getPendingBroadcast(ACTION_DISMISSED_LOW_BATTERY))
                .setContentIntent(getPendingBroadcast(ACTION_CLICKED_LOW_BATTERY))
                .setContentIntent(getPendingBroadcast(ACTION_CLICKED_LOW_BATTERY))
                .setContentTitle(context.getString(R.string.stylus_battery_low))
                .setContentTitle(
                .setContentText(
                    context.getString(
                    context.getString(
                        R.string.battery_low_percent_format,
                        R.string.stylus_battery_low_percentage,
                        NumberFormat.getPercentInstance().format(batteryCapacity)
                        NumberFormat.getPercentInstance().format(batteryCapacity)
                    )
                    )
                )
                )
                .setContentText(context.getString(R.string.stylus_battery_low_subtitle))
                .setPriority(NotificationCompat.PRIORITY_DEFAULT)
                .setPriority(NotificationCompat.PRIORITY_DEFAULT)
                .setLocalOnly(true)
                .setLocalOnly(true)
                .setAutoCancel(true)
                .setAutoCancel(true)
@@ -177,7 +177,7 @@ constructor(
        // https://source.chromium.org/chromium/chromium/src/+/main:ash/system/power/peripheral_battery_notifier.cc;l=41
        // https://source.chromium.org/chromium/chromium/src/+/main:ash/system/power/peripheral_battery_notifier.cc;l=41
        private const val LOW_BATTERY_THRESHOLD = 0.16f
        private const val LOW_BATTERY_THRESHOLD = 0.16f


        private val USI_NOTIFICATION_ID = R.string.stylus_battery_low
        private val USI_NOTIFICATION_ID = R.string.stylus_battery_low_percentage


        private const val ACTION_DISMISSED_LOW_BATTERY = "StylusUsiPowerUI.dismiss"
        private const val ACTION_DISMISSED_LOW_BATTERY = "StylusUsiPowerUI.dismiss"
        private const val ACTION_CLICKED_LOW_BATTERY = "StylusUsiPowerUI.click"
        private const val ACTION_CLICKED_LOW_BATTERY = "StylusUsiPowerUI.click"
+31 −12
Original line number Original line Diff line number Diff line
@@ -16,6 +16,7 @@


package com.android.systemui.stylus
package com.android.systemui.stylus


import android.app.Notification
import android.hardware.BatteryState
import android.hardware.BatteryState
import android.hardware.input.InputManager
import android.hardware.input.InputManager
import android.os.Handler
import android.os.Handler
@@ -28,10 +29,13 @@ import com.android.systemui.SysuiTestCase
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.eq
import com.android.systemui.util.mockito.eq
import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.mockito.whenever
import junit.framework.Assert.assertEquals
import org.junit.Before
import org.junit.Before
import org.junit.Ignore
import org.junit.Ignore
import org.junit.Test
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runner.RunWith
import org.mockito.ArgumentCaptor
import org.mockito.Captor
import org.mockito.Mock
import org.mockito.Mock
import org.mockito.Mockito.inOrder
import org.mockito.Mockito.inOrder
import org.mockito.Mockito.times
import org.mockito.Mockito.times
@@ -46,6 +50,7 @@ class StylusUsiPowerUiTest : SysuiTestCase() {
    @Mock lateinit var inputManager: InputManager
    @Mock lateinit var inputManager: InputManager
    @Mock lateinit var handler: Handler
    @Mock lateinit var handler: Handler
    @Mock lateinit var btStylusDevice: InputDevice
    @Mock lateinit var btStylusDevice: InputDevice
    @Captor lateinit var notificationCaptor: ArgumentCaptor<Notification>


    private lateinit var stylusUsiPowerUi: StylusUsiPowerUI
    private lateinit var stylusUsiPowerUi: StylusUsiPowerUI


@@ -70,7 +75,8 @@ class StylusUsiPowerUiTest : SysuiTestCase() {
    fun updateBatteryState_capacityBelowThreshold_notifies() {
    fun updateBatteryState_capacityBelowThreshold_notifies() {
        stylusUsiPowerUi.updateBatteryState(FixedCapacityBatteryState(0.1f))
        stylusUsiPowerUi.updateBatteryState(FixedCapacityBatteryState(0.1f))


        verify(notificationManager, times(1)).notify(eq(R.string.stylus_battery_low), any())
        verify(notificationManager, times(1))
            .notify(eq(R.string.stylus_battery_low_percentage), any())
        verifyNoMoreInteractions(notificationManager)
        verifyNoMoreInteractions(notificationManager)
    }
    }


@@ -78,7 +84,7 @@ class StylusUsiPowerUiTest : SysuiTestCase() {
    fun updateBatteryState_capacityAboveThreshold_cancelsNotificattion() {
    fun updateBatteryState_capacityAboveThreshold_cancelsNotificattion() {
        stylusUsiPowerUi.updateBatteryState(FixedCapacityBatteryState(0.8f))
        stylusUsiPowerUi.updateBatteryState(FixedCapacityBatteryState(0.8f))


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


@@ -88,8 +94,9 @@ class StylusUsiPowerUiTest : SysuiTestCase() {
        stylusUsiPowerUi.updateBatteryState(FixedCapacityBatteryState(0.8f))
        stylusUsiPowerUi.updateBatteryState(FixedCapacityBatteryState(0.8f))


        inOrder(notificationManager).let {
        inOrder(notificationManager).let {
            it.verify(notificationManager, times(1)).notify(eq(R.string.stylus_battery_low), any())
            it.verify(notificationManager, times(1))
            it.verify(notificationManager, times(1)).cancel(R.string.stylus_battery_low)
                .notify(eq(R.string.stylus_battery_low_percentage), any())
            it.verify(notificationManager, times(1)).cancel(R.string.stylus_battery_low_percentage)
            it.verifyNoMoreInteractions()
            it.verifyNoMoreInteractions()
        }
        }
    }
    }
@@ -99,7 +106,16 @@ class StylusUsiPowerUiTest : SysuiTestCase() {
        stylusUsiPowerUi.updateBatteryState(FixedCapacityBatteryState(0.1f))
        stylusUsiPowerUi.updateBatteryState(FixedCapacityBatteryState(0.1f))
        stylusUsiPowerUi.updateBatteryState(FixedCapacityBatteryState(0.15f))
        stylusUsiPowerUi.updateBatteryState(FixedCapacityBatteryState(0.15f))


        verify(notificationManager, times(2)).notify(eq(R.string.stylus_battery_low), any())
        verify(notificationManager, times(2))
            .notify(eq(R.string.stylus_battery_low_percentage), notificationCaptor.capture())
        assertEquals(
            notificationCaptor.value.extras.getString(Notification.EXTRA_TITLE),
            context.getString(R.string.stylus_battery_low_percentage, "15%")
        )
        assertEquals(
            notificationCaptor.value.extras.getString(Notification.EXTRA_TEXT),
            context.getString(R.string.stylus_battery_low_subtitle)
        )
        verifyNoMoreInteractions(notificationManager)
        verifyNoMoreInteractions(notificationManager)
    }
    }


@@ -110,9 +126,11 @@ class StylusUsiPowerUiTest : SysuiTestCase() {
        stylusUsiPowerUi.updateBatteryState(FixedCapacityBatteryState(0.1f))
        stylusUsiPowerUi.updateBatteryState(FixedCapacityBatteryState(0.1f))


        inOrder(notificationManager).let {
        inOrder(notificationManager).let {
            it.verify(notificationManager, times(1)).notify(eq(R.string.stylus_battery_low), any())
            it.verify(notificationManager, times(1))
            it.verify(notificationManager, times(1)).cancel(R.string.stylus_battery_low)
                .notify(eq(R.string.stylus_battery_low_percentage), any())
            it.verify(notificationManager, times(1)).notify(eq(R.string.stylus_battery_low), any())
            it.verify(notificationManager, times(1)).cancel(R.string.stylus_battery_low_percentage)
            it.verify(notificationManager, times(1))
                .notify(eq(R.string.stylus_battery_low_percentage), any())
            it.verifyNoMoreInteractions()
            it.verifyNoMoreInteractions()
        }
        }
    }
    }
@@ -121,7 +139,7 @@ class StylusUsiPowerUiTest : SysuiTestCase() {
    fun updateSuppression_noExistingNotification_cancelsNotification() {
    fun updateSuppression_noExistingNotification_cancelsNotification() {
        stylusUsiPowerUi.updateSuppression(true)
        stylusUsiPowerUi.updateSuppression(true)


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


@@ -132,8 +150,9 @@ class StylusUsiPowerUiTest : SysuiTestCase() {
        stylusUsiPowerUi.updateSuppression(true)
        stylusUsiPowerUi.updateSuppression(true)


        inOrder(notificationManager).let {
        inOrder(notificationManager).let {
            it.verify(notificationManager, times(1)).notify(eq(R.string.stylus_battery_low), any())
            it.verify(notificationManager, times(1))
            it.verify(notificationManager, times(1)).cancel(R.string.stylus_battery_low)
                .notify(eq(R.string.stylus_battery_low_percentage), any())
            it.verify(notificationManager, times(1)).cancel(R.string.stylus_battery_low_percentage)
            it.verifyNoMoreInteractions()
            it.verifyNoMoreInteractions()
        }
        }
    }
    }
@@ -156,7 +175,7 @@ class StylusUsiPowerUiTest : SysuiTestCase() {


        stylusUsiPowerUi.refresh()
        stylusUsiPowerUi.refresh()


        verify(notificationManager).cancel(R.string.stylus_battery_low)
        verify(notificationManager).cancel(R.string.stylus_battery_low_percentage)
    }
    }


    class FixedCapacityBatteryState(private val capacity: Float) : BatteryState() {
    class FixedCapacityBatteryState(private val capacity: Float) : BatteryState() {