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

Commit c0f7e758 authored by Xinyi Mao's avatar Xinyi Mao Committed by Android (Google) Code Review
Browse files

Merge "Add flag to force expire the app optimization mode event." into main

parents c5fc20d8 08907935
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)