Add a flag to protect overwrite app optimization mode to restricted mode.

- Skip set app optimization mode to restricted if the flag disabled.

Bug: 348192536
Fix: 348192536
Test: atest
Flag: EXEMPT bug fix
Change-Id: I92d320ce1edfe9b7044afdcd058651b0d54bd6bd
This commit is contained in:
mxyyiyi
2024-07-01 14:20:46 +08:00
parent 90acfa757a
commit a954e914dd
5 changed files with 78 additions and 9 deletions

View File

@@ -44,6 +44,9 @@ public interface PowerUsageFeatureProvider {
/** Check whether the battery tips card is enabled in the battery usage page */
boolean isBatteryTipsEnabled();
/** Check whether overwrite the app optimization mode to restricted mode is enabled */
boolean isRestrictedModeOverwriteEnabled();
/** Check whether force expire the app optimization mode. */
boolean isForceExpireAppOptimizationModeEnabled();

View File

@@ -88,6 +88,11 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider
return false;
}
@Override
public boolean isRestrictedModeOverwriteEnabled() {
return false;
}
@Override
public boolean isForceExpireAppOptimizationModeEnabled() {
return false;

View File

@@ -76,8 +76,7 @@ object AppOptModeSharedPreferencesUtils {
fun resetExpiredAppOptModeBeforeTimestamp(context: Context, queryTimestampMs: Long) =
synchronized(appOptimizationModeLock) {
val forceExpireEnabled =
featureFactory
.powerUsageFeatureProvider.isForceExpireAppOptimizationModeEnabled
featureFactory.powerUsageFeatureProvider.isForceExpireAppOptimizationModeEnabled
val eventsMap = getAppOptModeEventsMap(context)
val expirationUids = ArrayList<Int>(eventsMap.size)
for ((uid, event) in eventsMap) {
@@ -113,12 +112,22 @@ object AppOptModeSharedPreferencesUtils {
getBatteryOptimizeUtils: (Int, String) -> BatteryOptimizeUtils,
) =
synchronized(appOptimizationModeLock) {
val restrictedModeOverwriteEnabled =
featureFactory.powerUsageFeatureProvider.isRestrictedModeOverwriteEnabled
val eventsMap = getAppOptModeEventsMap(context)
val expirationEvents: MutableMap<Int, AppOptimizationModeEvent> = ArrayMap()
for (i in uids.indices) {
val uid = uids[i]
val packageName = packageNames[i]
val optimizationMode = optimizationModes[i]
if (
!restrictedModeOverwriteEnabled &&
optimizationMode == BatteryOptimizeUtils.MODE_RESTRICTED
) {
// Unable to set restricted mode due to flag protection.
Log.w(TAG, "setOptimizationMode($packageName) into restricted ignored")
continue
}
val originalOptMode: Int =
updateBatteryOptimizationMode(
context,