Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1767a6eb authored by mxyyiyi's avatar mxyyiyi
Browse files

Fetch the original battery optimization mode in backup & restore process.

- Battery optimization mode maybe temporary updated by turbo.

Bug: 338965652
Test: atest + manual
Change-Id: Ibea7ecc85ee7d042058f1bccc043fa501be2b8db
parent d6fe83b8
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -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
+11 −2
Original line number Diff line number Diff line
@@ -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