Merge "Take as Unrestricted Mode in the UI if current Mode is Unknown." into main
This commit is contained in:
@@ -196,7 +196,9 @@ public final class BatteryBackupHelper implements BackupHelper {
|
||||
appOptModeMap.containsKey(info.uid)
|
||||
? (int) appOptModeMap.get(info.uid).getResetOptimizationMode()
|
||||
: BatteryOptimizeUtils.getAppOptimizationMode(
|
||||
mode, allowlistedApps.contains(info.packageName));
|
||||
mode,
|
||||
allowlistedApps.contains(info.packageName),
|
||||
/* ignoreUnknownMode= */ false);
|
||||
// Ignores default optimized/unknown state or system/default apps.
|
||||
if (optimizationMode == BatteryOptimizeUtils.MODE_OPTIMIZED
|
||||
|| optimizationMode == BatteryOptimizeUtils.MODE_UNKNOWN
|
||||
|
@@ -100,7 +100,8 @@ public class BatteryOptimizeUtils {
|
||||
|
||||
/** Gets the {@link OptimizationMode} based on mode and allowed list. */
|
||||
@OptimizationMode
|
||||
public static int getAppOptimizationMode(int mode, boolean isAllowListed) {
|
||||
public static int getAppOptimizationMode(
|
||||
int mode, boolean isAllowListed, boolean ignoreUnknownMode) {
|
||||
if (!isAllowListed && mode == AppOpsManager.MODE_IGNORED) {
|
||||
return MODE_RESTRICTED;
|
||||
} else if (isAllowListed && mode == AppOpsManager.MODE_ALLOWED) {
|
||||
@@ -108,13 +109,15 @@ public class BatteryOptimizeUtils {
|
||||
} else if (!isAllowListed && mode == AppOpsManager.MODE_ALLOWED) {
|
||||
return MODE_OPTIMIZED;
|
||||
} else {
|
||||
return MODE_UNKNOWN;
|
||||
// MODE_UNKNOWN = isAllowListed + AppOpsManager.MODE_IGNORED
|
||||
// Return Unrestricted mode for Unknown mode since it is in allowlist.
|
||||
return ignoreUnknownMode ? MODE_UNRESTRICTED : MODE_UNKNOWN;
|
||||
}
|
||||
}
|
||||
|
||||
/** Gets the {@link OptimizationMode} for associated app. */
|
||||
@OptimizationMode
|
||||
public int getAppOptimizationMode(boolean refreshList) {
|
||||
public int getAppOptimizationMode(boolean refreshList, boolean ignoreUnknownMode) {
|
||||
if (refreshList) {
|
||||
mPowerAllowListBackend.refreshList();
|
||||
}
|
||||
@@ -127,13 +130,13 @@ public class BatteryOptimizeUtils {
|
||||
String.format(
|
||||
"refresh %s state, allowlisted = %s, mode = %d",
|
||||
mPackageName, mAllowListed, mMode));
|
||||
return getAppOptimizationMode(mMode, mAllowListed);
|
||||
return getAppOptimizationMode(mMode, mAllowListed, ignoreUnknownMode);
|
||||
}
|
||||
|
||||
/** Gets the {@link OptimizationMode} for associated app. */
|
||||
@OptimizationMode
|
||||
public int getAppOptimizationMode() {
|
||||
return getAppOptimizationMode(true);
|
||||
return getAppOptimizationMode(/* refreshList= */ true, /* ignoreUnknownMode= */ true);
|
||||
}
|
||||
|
||||
/** Resets optimization mode for all applications. */
|
||||
@@ -246,10 +249,11 @@ public class BatteryOptimizeUtils {
|
||||
@OptimizationMode
|
||||
final int optimizationMode =
|
||||
getAppOptimizationMode(
|
||||
mode, allowlistBackend.isAllowlisted(info.packageName, info.uid));
|
||||
// Ignores default optimized/unknown state or system/default apps.
|
||||
mode,
|
||||
allowlistBackend.isAllowlisted(info.packageName, info.uid),
|
||||
/* ignoreUnknownMode= */ false);
|
||||
// Ignores default optimized state or system/default apps.
|
||||
if (optimizationMode == MODE_OPTIMIZED
|
||||
|| optimizationMode == MODE_UNKNOWN
|
||||
|| isSystemOrDefaultApp(
|
||||
context, allowlistBackend, info.packageName, info.uid)) {
|
||||
continue;
|
||||
@@ -374,7 +378,8 @@ public class BatteryOptimizeUtils {
|
||||
"\tStandbyMode: %s, allowListed: %s, mode: %s",
|
||||
appStandbyMode,
|
||||
allowListed,
|
||||
getAppOptimizationMode(appStandbyMode, allowListed));
|
||||
getAppOptimizationMode(
|
||||
appStandbyMode, allowListed, /* ignoreUnknownMode= */ false));
|
||||
}
|
||||
|
||||
private static @DataChangeReason int toChangeReason(Action action) {
|
||||
|
@@ -347,7 +347,9 @@ public final class BatterySettingsStorage extends ObservableBackupRestoreStorage
|
||||
appOptModeMap.containsKey(info.uid)
|
||||
? (int) appOptModeMap.get(info.uid).getResetOptimizationMode()
|
||||
: BatteryOptimizeUtils.getAppOptimizationMode(
|
||||
mode, mAllowlistedApps.contains(info.packageName));
|
||||
mode,
|
||||
mAllowlistedApps.contains(info.packageName),
|
||||
/* ignoreUnknownMode= */ false);
|
||||
// Ignores default optimized/unknown state or system/default apps.
|
||||
if (optimizationMode == BatteryOptimizeUtils.MODE_OPTIMIZED
|
||||
|| optimizationMode == BatteryOptimizeUtils.MODE_UNKNOWN
|
||||
|
@@ -51,7 +51,8 @@ final class BatteryOptimizationModeCache {
|
||||
Pair.create(
|
||||
BatteryOptimizationMode.forNumber(
|
||||
batteryOptimizeUtils.getAppOptimizationMode(
|
||||
/* refreshList= */ false)),
|
||||
/* refreshList= */ false,
|
||||
/* ignoreUnknownMode= */ false)),
|
||||
batteryOptimizeUtils.isOptimizeModeMutable()));
|
||||
}
|
||||
final Pair<BatteryOptimizationMode, Boolean> batteryOptimizeModeInfo =
|
||||
|
@@ -107,7 +107,7 @@ class BatteryOptimizationModeAppListModel(
|
||||
PowerAllowlistBackend.getInstance(context).refreshList()
|
||||
return recordListFlow.filterItem {
|
||||
val appOptimizationMode = BatteryOptimizeUtils(context, it.app.uid, it.app.packageName)
|
||||
.getAppOptimizationMode(/* refreshList */ false);
|
||||
.getAppOptimizationMode(/* refreshList */ false, /* ignoreUnknownMode */ true);
|
||||
when (OptimizationModeSpinnerItem.entries.getOrNull(option)) {
|
||||
OptimizationModeSpinnerItem.Restricted ->
|
||||
appOptimizationMode == BatteryOptimizeUtils.MODE_RESTRICTED
|
||||
|
Reference in New Issue
Block a user