Add flag to force expire the app optimization mode event.
Bug: 347444433 Test: atest Change-Id: Id502607ed6c07870d14346656a65ceccb756b78f
This commit is contained in:
@@ -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();
|
||||
|
||||
|
@@ -83,6 +83,11 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isForceExpireAppOptimizationModeEnabled() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAppOptimizationModeLogged() {
|
||||
return false;
|
||||
|
@@ -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(
|
||||
|
@@ -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();
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user