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 */
|
/** Check whether the battery tips card is enabled in the battery usage page */
|
||||||
boolean isBatteryTipsEnabled();
|
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 */
|
/** Check whether to log the optimization mode of app entry in period job */
|
||||||
boolean isAppOptimizationModeLogged();
|
boolean isAppOptimizationModeLogged();
|
||||||
|
|
||||||
|
@@ -83,6 +83,11 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isForceExpireAppOptimizationModeEnabled() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAppOptimizationModeLogged() {
|
public boolean isAppOptimizationModeLogged() {
|
||||||
return false;
|
return false;
|
||||||
|
@@ -25,6 +25,7 @@ import androidx.annotation.VisibleForTesting
|
|||||||
import com.android.settings.fuelgauge.BatteryOptimizeHistoricalLogEntry.Action
|
import com.android.settings.fuelgauge.BatteryOptimizeHistoricalLogEntry.Action
|
||||||
import com.android.settings.fuelgauge.BatteryOptimizeUtils
|
import com.android.settings.fuelgauge.BatteryOptimizeUtils
|
||||||
import com.android.settings.fuelgauge.BatteryUtils
|
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. */
|
/** A util to store and update app optimization mode expiration event data. */
|
||||||
object AppOptModeSharedPreferencesUtils {
|
object AppOptModeSharedPreferencesUtils {
|
||||||
@@ -74,10 +75,14 @@ object AppOptModeSharedPreferencesUtils {
|
|||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun resetExpiredAppOptModeBeforeTimestamp(context: Context, queryTimestampMs: Long) =
|
fun resetExpiredAppOptModeBeforeTimestamp(context: Context, queryTimestampMs: Long) =
|
||||||
synchronized(appOptimizationModeLock) {
|
synchronized(appOptimizationModeLock) {
|
||||||
|
val forceExpireEnabled =
|
||||||
|
featureFactory
|
||||||
|
.powerUsageFeatureProvider.isForceExpireAppOptimizationModeEnabled
|
||||||
val eventsMap = getAppOptModeEventsMap(context)
|
val eventsMap = getAppOptModeEventsMap(context)
|
||||||
val expirationUids = ArrayList<Int>(eventsMap.size)
|
val expirationUids = ArrayList<Int>(eventsMap.size)
|
||||||
for ((uid, event) in eventsMap) {
|
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
|
continue
|
||||||
}
|
}
|
||||||
updateBatteryOptimizationMode(
|
updateBatteryOptimizationMode(
|
||||||
|
@@ -77,6 +77,11 @@ public class PowerUsageFeatureProviderImplTest {
|
|||||||
assertThat(mPowerFeatureProvider.isBatteryTipsEnabled()).isFalse();
|
assertThat(mPowerFeatureProvider.isBatteryTipsEnabled()).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isForceExpireAppOptimizationModeEnabled_returnFalse() {
|
||||||
|
assertThat(mPowerFeatureProvider.isForceExpireAppOptimizationModeEnabled()).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isAppOptimizationModeLogged_returnFalse() {
|
public void isAppOptimizationModeLogged_returnFalse() {
|
||||||
assertThat(mPowerFeatureProvider.isAppOptimizationModeLogged()).isFalse();
|
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_UNKNOWN
|
||||||
import com.android.settings.fuelgauge.BatteryOptimizeUtils.MODE_UNRESTRICTED
|
import com.android.settings.fuelgauge.BatteryOptimizeUtils.MODE_UNRESTRICTED
|
||||||
import com.android.settings.fuelgauge.batteryusage.AppOptModeSharedPreferencesUtils.UNLIMITED_EXPIRE_TIME
|
import com.android.settings.fuelgauge.batteryusage.AppOptModeSharedPreferencesUtils.UNLIMITED_EXPIRE_TIME
|
||||||
|
import com.android.settings.testutils.FakeFeatureFactory
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import org.junit.After
|
import org.junit.After
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
@@ -51,9 +52,14 @@ class AppOptModeSharedPreferencesUtilsTest {
|
|||||||
@Spy
|
@Spy
|
||||||
private var testBatteryOptimizeUtils = spy(BatteryOptimizeUtils(context, UID, PACKAGE_NAME))
|
private var testBatteryOptimizeUtils = spy(BatteryOptimizeUtils(context, UID, PACKAGE_NAME))
|
||||||
|
|
||||||
|
private lateinit var featureFactory: FakeFeatureFactory
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setup() {
|
fun setup() {
|
||||||
AppOptModeSharedPreferencesUtils.clearAll(context)
|
AppOptModeSharedPreferencesUtils.clearAll(context)
|
||||||
|
featureFactory = FakeFeatureFactory.setupForTest()
|
||||||
|
whenever(featureFactory.powerUsageFeatureProvider.isForceExpireAppOptimizationModeEnabled)
|
||||||
|
.thenReturn(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
@@ -126,6 +132,20 @@ class AppOptModeSharedPreferencesUtilsTest {
|
|||||||
assertThat(AppOptModeSharedPreferencesUtils.getAllEvents(context)).isEmpty()
|
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
|
@Test
|
||||||
fun resetExpiredAppOptModeBeforeTimestamp_noExpiredData_verifyData() {
|
fun resetExpiredAppOptModeBeforeTimestamp_noExpiredData_verifyData() {
|
||||||
insertAppOptModeEventForTest(expirationTime = 1000L)
|
insertAppOptModeEventForTest(expirationTime = 1000L)
|
||||||
|
Reference in New Issue
Block a user