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

Commit 08907935 authored by mxyyiyi's avatar mxyyiyi
Browse files

Add flag to force expire the app optimization mode event.

Bug: 347444433
Test: atest
Change-Id: Id502607ed6c07870d14346656a65ceccb756b78f
parent 3576f484
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -39,6 +39,9 @@ public interface PowerUsageFeatureProvider {
    /** Check whether the battery tips card is enabled in the battery usage page */
    boolean isBatteryTipsEnabled();

    /** Check whether force expire the app optimization mode. */
    boolean isForceExpireAppOptimizationModeEnabled();

    /** Check whether to log the optimization mode of app entry in period job */
    boolean isAppOptimizationModeLogged();

+5 −0
Original line number Diff line number Diff line
@@ -83,6 +83,11 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider
        return false;
    }

    @Override
    public boolean isForceExpireAppOptimizationModeEnabled() {
        return false;
    }

    @Override
    public boolean isAppOptimizationModeLogged() {
        return false;
+6 −1
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import androidx.annotation.VisibleForTesting
import com.android.settings.fuelgauge.BatteryOptimizeHistoricalLogEntry.Action
import com.android.settings.fuelgauge.BatteryOptimizeUtils
import com.android.settings.fuelgauge.BatteryUtils
import com.android.settings.overlay.FeatureFactory.Companion.featureFactory

/** A util to store and update app optimization mode expiration event data. */
object AppOptModeSharedPreferencesUtils {
@@ -74,10 +75,14 @@ object AppOptModeSharedPreferencesUtils {
    @JvmStatic
    fun resetExpiredAppOptModeBeforeTimestamp(context: Context, queryTimestampMs: Long) =
        synchronized(appOptimizationModeLock) {
            val forceExpireEnabled =
                featureFactory
                    .powerUsageFeatureProvider.isForceExpireAppOptimizationModeEnabled
            val eventsMap = getAppOptModeEventsMap(context)
            val expirationUids = ArrayList<Int>(eventsMap.size)
            for ((uid, event) in eventsMap) {
                if (event.expirationTime > queryTimestampMs) {
                // Not reset the mode if forceExpireEnabled is false and not expired.
                if (!forceExpireEnabled && event.expirationTime > queryTimestampMs) {
                    continue
                }
                updateBatteryOptimizationMode(
+5 −0
Original line number Diff line number Diff line
@@ -77,6 +77,11 @@ public class PowerUsageFeatureProviderImplTest {
        assertThat(mPowerFeatureProvider.isBatteryTipsEnabled()).isFalse();
    }

    @Test
    public void isForceExpireAppOptimizationModeEnabled_returnFalse() {
        assertThat(mPowerFeatureProvider.isForceExpireAppOptimizationModeEnabled()).isFalse();
    }

    @Test
    public void isAppOptimizationModeLogged_returnFalse() {
        assertThat(mPowerFeatureProvider.isAppOptimizationModeLogged()).isFalse();
+20 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import com.android.settings.fuelgauge.BatteryOptimizeUtils.MODE_RESTRICTED
import com.android.settings.fuelgauge.BatteryOptimizeUtils.MODE_UNKNOWN
import com.android.settings.fuelgauge.BatteryOptimizeUtils.MODE_UNRESTRICTED
import com.android.settings.fuelgauge.batteryusage.AppOptModeSharedPreferencesUtils.UNLIMITED_EXPIRE_TIME
import com.android.settings.testutils.FakeFeatureFactory
import com.google.common.truth.Truth.assertThat
import org.junit.After
import org.junit.Before
@@ -51,9 +52,14 @@ class AppOptModeSharedPreferencesUtilsTest {
    @Spy
    private var testBatteryOptimizeUtils = spy(BatteryOptimizeUtils(context, UID, PACKAGE_NAME))

    private lateinit var featureFactory: FakeFeatureFactory

    @Before
    fun setup() {
        AppOptModeSharedPreferencesUtils.clearAll(context)
        featureFactory = FakeFeatureFactory.setupForTest()
        whenever(featureFactory.powerUsageFeatureProvider.isForceExpireAppOptimizationModeEnabled)
            .thenReturn(false)
    }

    @After
@@ -126,6 +132,20 @@ class AppOptModeSharedPreferencesUtilsTest {
        assertThat(AppOptModeSharedPreferencesUtils.getAllEvents(context)).isEmpty()
    }

    @Test
    fun resetExpiredAppOptModeBeforeTimestamp_forceExpiredData_verifyEmptyList() {
        whenever(featureFactory.powerUsageFeatureProvider.isForceExpireAppOptimizationModeEnabled)
            .thenReturn(true)
        insertAppOptModeEventForTest(expirationTime = 1000L)

        AppOptModeSharedPreferencesUtils.resetExpiredAppOptModeBeforeTimestamp(
            context,
            queryTimestampMs = 999L
        )

        assertThat(AppOptModeSharedPreferencesUtils.getAllEvents(context)).isEmpty()
    }

    @Test
    fun resetExpiredAppOptModeBeforeTimestamp_noExpiredData_verifyData() {
        insertAppOptModeEventForTest(expirationTime = 1000L)