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

Commit dc8aebcd authored by Vania Januar's avatar Vania Januar Committed by Android (Google) Code Review
Browse files

Merge "Strings for USI low battery notifications." into tm-qpr-dev

parents 93cbbde6 8d7adf5f
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -2772,6 +2772,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>
+4 −4
Original line number Diff line number Diff line
@@ -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"
+31 −12
Original line number Diff line number Diff line
@@ -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() {