Merge "Fetch the original battery optimization mode in backup & restore process." into main

This commit is contained in:
YK Hung
2024-06-04 10:28:37 +00:00
committed by Android (Google) Code Review
2 changed files with 22 additions and 4 deletions

View File

@@ -38,6 +38,8 @@ import android.util.Log;
import androidx.annotation.VisibleForTesting;
import com.android.settings.fuelgauge.BatteryOptimizeHistoricalLogEntry.Action;
import com.android.settings.fuelgauge.batteryusage.AppOptModeSharedPreferencesUtils;
import com.android.settings.fuelgauge.batteryusage.AppOptimizationModeEvent;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.fuelgauge.PowerAllowlistBackend;
@@ -47,6 +49,8 @@ import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** An implementation to backup and restore battery configurations. */
public final class BatteryBackupHelper implements BackupHelper {
@@ -181,12 +185,17 @@ public final class BatteryBackupHelper implements BackupHelper {
final StringBuilder builder = new StringBuilder();
final AppOpsManager appOps = mContext.getSystemService(AppOpsManager.class);
final SharedPreferences sharedPreferences = getSharedPreferences(mContext);
final Map<Integer, AppOptimizationModeEvent> appOptModeMap =
AppOptModeSharedPreferencesUtils.getAllEvents(mContext).stream()
.collect(Collectors.toMap(AppOptimizationModeEvent::getUid, e -> e));
// Converts application into the AppUsageState.
for (ApplicationInfo info : applications) {
final int mode = BatteryOptimizeUtils.getMode(appOps, info.uid, info.packageName);
@BatteryOptimizeUtils.OptimizationMode
final int optimizationMode =
BatteryOptimizeUtils.getAppOptimizationMode(
appOptModeMap.containsKey(info.uid)
? (int) appOptModeMap.get(info.uid).getResetOptimizationMode()
: BatteryOptimizeUtils.getAppOptimizationMode(
mode, allowlistedApps.contains(info.packageName));
// Ignores default optimized/unknown state or system/default apps.
if (optimizationMode == BatteryOptimizeUtils.MODE_OPTIMIZED

View File

@@ -37,6 +37,8 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.android.settings.fuelgauge.BatteryOptimizeHistoricalLogEntry.Action;
import com.android.settings.fuelgauge.batteryusage.AppOptModeSharedPreferencesUtils;
import com.android.settings.fuelgauge.batteryusage.AppOptimizationModeEvent;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.datastore.BackupCodec;
import com.android.settingslib.datastore.BackupContext;
@@ -54,6 +56,8 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** An implementation to backup and restore battery configurations. */
public final class BatterySettingsStorage extends ObservableBackupRestoreStorage {
@@ -332,12 +336,17 @@ public final class BatterySettingsStorage extends ObservableBackupRestoreStorage
final StringBuilder builder = new StringBuilder();
final AppOpsManager appOps = mApplication.getSystemService(AppOpsManager.class);
final SharedPreferences sharedPreferences = getSharedPreferences(mApplication);
final Map<Integer, AppOptimizationModeEvent> appOptModeMap =
AppOptModeSharedPreferencesUtils.getAllEvents(mApplication).stream()
.collect(Collectors.toMap(AppOptimizationModeEvent::getUid, e -> e));
// Converts application into the AppUsageState.
for (ApplicationInfo info : applications) {
final int mode = BatteryOptimizeUtils.getMode(appOps, info.uid, info.packageName);
@BatteryOptimizeUtils.OptimizationMode
final int optimizationMode =
BatteryOptimizeUtils.getAppOptimizationMode(
appOptModeMap.containsKey(info.uid)
? (int) appOptModeMap.get(info.uid).getResetOptimizationMode()
: BatteryOptimizeUtils.getAppOptimizationMode(
mode, mAllowlistedApps.contains(info.packageName));
// Ignores default optimized/unknown state or system/default apps.
if (optimizationMode == BatteryOptimizeUtils.MODE_OPTIMIZED