Merge "Add flag to force expire the app optimization mode event." into main
diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java
index f63b649..0132273 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java
@@ -39,6 +39,9 @@
/** 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();
diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java
index cc6659a..1675ce6 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java
@@ -84,6 +84,11 @@
}
@Override
+ public boolean isForceExpireAppOptimizationModeEnabled() {
+ return false;
+ }
+
+ @Override
public boolean isAppOptimizationModeLogged() {
return false;
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtils.kt b/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtils.kt
index 1111bd4..afff1c9 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtils.kt
+++ b/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtils.kt
@@ -25,6 +25,7 @@
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 @@
@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(
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java
index 354afd0..6b32ff5 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java
@@ -78,6 +78,11 @@
}
@Test
+ public void isForceExpireAppOptimizationModeEnabled_returnFalse() {
+ assertThat(mPowerFeatureProvider.isForceExpireAppOptimizationModeEnabled()).isFalse();
+ }
+
+ @Test
public void isAppOptimizationModeLogged_returnFalse() {
assertThat(mPowerFeatureProvider.isAppOptimizationModeLogged()).isFalse();
}
diff --git a/tests/unit/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtilsTest.kt b/tests/unit/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtilsTest.kt
index 76ae491..94f082d 100644
--- a/tests/unit/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtilsTest.kt
+++ b/tests/unit/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtilsTest.kt
@@ -26,6 +26,7 @@
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 @@
@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
@@ -127,6 +133,20 @@
}
@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)