Strings for USI low battery notifications.

Bug: 261418856
Test: strings
Change-Id: I298ebaa80fe7273af7d95e0fe6310485cdb310c9
This commit is contained in:
Vania Januar
2022-12-23 10:49:05 +00:00
parent de15767636
commit 8d7adf5fb7
3 changed files with 40 additions and 18 deletions

View File

@@ -2770,6 +2770,9 @@
<!-- 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>
<!-- Title for notification of low stylus battery. [CHAR_LIMIT=NONE] -->
<string name="stylus_battery_low">Stylus battery low</string>
<!-- Title for notification of low stylus battery with percentage. "percentage" is
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>

View File

@@ -123,13 +123,13 @@ constructor(
.setSmallIcon(R.drawable.ic_power_low)
.setDeleteIntent(getPendingBroadcast(ACTION_DISMISSED_LOW_BATTERY))
.setContentIntent(getPendingBroadcast(ACTION_CLICKED_LOW_BATTERY))
.setContentTitle(context.getString(R.string.stylus_battery_low))
.setContentText(
.setContentTitle(
context.getString(
R.string.battery_low_percent_format,
R.string.stylus_battery_low_percentage,
NumberFormat.getPercentInstance().format(batteryCapacity)
)
)
.setContentText(context.getString(R.string.stylus_battery_low_subtitle))
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setLocalOnly(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
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_CLICKED_LOW_BATTERY = "StylusUsiPowerUI.click"

View File

@@ -16,6 +16,7 @@
package com.android.systemui.stylus
import android.app.Notification
import android.hardware.BatteryState
import android.hardware.input.InputManager
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.eq
import com.android.systemui.util.mockito.whenever
import junit.framework.Assert.assertEquals
import org.junit.Before
import org.junit.Ignore
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentCaptor
import org.mockito.Captor
import org.mockito.Mock
import org.mockito.Mockito.inOrder
import org.mockito.Mockito.times
@@ -46,6 +50,7 @@ class StylusUsiPowerUiTest : SysuiTestCase() {
@Mock lateinit var inputManager: InputManager
@Mock lateinit var handler: Handler
@Mock lateinit var btStylusDevice: InputDevice
@Captor lateinit var notificationCaptor: ArgumentCaptor<Notification>
private lateinit var stylusUsiPowerUi: StylusUsiPowerUI
@@ -70,7 +75,8 @@ class StylusUsiPowerUiTest : SysuiTestCase() {
fun updateBatteryState_capacityBelowThreshold_notifies() {
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)
}
@@ -78,7 +84,7 @@ class StylusUsiPowerUiTest : SysuiTestCase() {
fun updateBatteryState_capacityAboveThreshold_cancelsNotificattion() {
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)
}
@@ -88,8 +94,9 @@ class StylusUsiPowerUiTest : SysuiTestCase() {
stylusUsiPowerUi.updateBatteryState(FixedCapacityBatteryState(0.8f))
inOrder(notificationManager).let {
it.verify(notificationManager, times(1)).notify(eq(R.string.stylus_battery_low), any())
it.verify(notificationManager, times(1)).cancel(R.string.stylus_battery_low)
it.verify(notificationManager, times(1))
.notify(eq(R.string.stylus_battery_low_percentage), any())
it.verify(notificationManager, times(1)).cancel(R.string.stylus_battery_low_percentage)
it.verifyNoMoreInteractions()
}
}
@@ -99,7 +106,16 @@ class StylusUsiPowerUiTest : SysuiTestCase() {
stylusUsiPowerUi.updateBatteryState(FixedCapacityBatteryState(0.1f))
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)
}
@@ -110,9 +126,11 @@ class StylusUsiPowerUiTest : SysuiTestCase() {
stylusUsiPowerUi.updateBatteryState(FixedCapacityBatteryState(0.1f))
inOrder(notificationManager).let {
it.verify(notificationManager, times(1)).notify(eq(R.string.stylus_battery_low), any())
it.verify(notificationManager, times(1)).cancel(R.string.stylus_battery_low)
it.verify(notificationManager, times(1)).notify(eq(R.string.stylus_battery_low), any())
it.verify(notificationManager, times(1))
.notify(eq(R.string.stylus_battery_low_percentage), 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()
}
}
@@ -121,7 +139,7 @@ class StylusUsiPowerUiTest : SysuiTestCase() {
fun updateSuppression_noExistingNotification_cancelsNotification() {
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)
}
@@ -132,8 +150,9 @@ class StylusUsiPowerUiTest : SysuiTestCase() {
stylusUsiPowerUi.updateSuppression(true)
inOrder(notificationManager).let {
it.verify(notificationManager, times(1)).notify(eq(R.string.stylus_battery_low), any())
it.verify(notificationManager, times(1)).cancel(R.string.stylus_battery_low)
it.verify(notificationManager, times(1))
.notify(eq(R.string.stylus_battery_low_percentage), any())
it.verify(notificationManager, times(1)).cancel(R.string.stylus_battery_low_percentage)
it.verifyNoMoreInteractions()
}
}
@@ -156,7 +175,7 @@ class StylusUsiPowerUiTest : SysuiTestCase() {
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() {