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

Commit 137f9aca authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Optimize battery optimize page control flow" into sc-v2-dev am: c6a5bcc9

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/16138630

Change-Id: Ic9d497517b6778c413909917d485575a054dc331
parents ad58b6cd c6a5bcc9
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -282,6 +282,15 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
        }
    }

    @Override
    public void onPause() {
        super.onPause();
        if (mEnableTriState) {
            Log.d(TAG, "Leave with mode: " + getSelectedPreference());
            mBatteryOptimizeUtils.setAppUsageState(getSelectedPreference());
        }
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
@@ -490,6 +499,18 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
        mOptimizationMode = mBatteryOptimizeUtils.getAppOptimizationMode();
    }

    private int getSelectedPreference() {
        if (mRestrictedPreference.isChecked()) {
            return BatteryOptimizeUtils.MODE_RESTRICTED;
        } else if (mUnrestrictedPreference.isChecked()) {
            return BatteryOptimizeUtils.MODE_UNRESTRICTED;
        } else if (mOptimizePreference.isChecked()) {
            return BatteryOptimizeUtils.MODE_OPTIMIZED;
        } else {
            return BatteryOptimizeUtils.MODE_UNKNOWN;
        }
    }

    private CharSequence getAppActiveTime(Bundle bundle) {
        final long foregroundTimeMs = bundle.getLong(EXTRA_FOREGROUND_TIME);
        final long backgroundTimeMs = bundle.getLong(EXTRA_BACKGROUND_TIME);
+2 −2
Original line number Diff line number Diff line
@@ -29,8 +29,8 @@ import android.content.pm.ParceledListSlice;
import android.content.pm.UserInfo;
import android.os.Build;
import android.os.IDeviceIdleController;
import android.os.RemoteException;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.UserHandle;
import android.os.UserManager;
@@ -230,7 +230,7 @@ public final class BatteryBackupHelper implements BackupHelper {
                mBatteryOptimizeUtils != null
                        ? mBatteryOptimizeUtils /*testing only*/
                        : new BatteryOptimizeUtils(mContext, uid, packageName);
        batteryOptimizeUtils.setAppOptimizationMode(mode);
        batteryOptimizeUtils.setAppUsageState(mode);
        Log.d(TAG, String.format("restore:%s mode=%d", packageName, mode));
    }

+31 −25
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.settings.fuelgauge;
import android.annotation.IntDef;
import android.app.AppOpsManager;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;

import androidx.annotation.VisibleForTesting;
@@ -89,36 +90,28 @@ public class BatteryOptimizeUtils {
        return getAppOptimizationMode(mMode, mAllowListed);
    }

    public void setAppOptimizationMode(@OptimizationMode int mode) {
        try {
            setAppUsageStateInternal(mode);
        } catch (Exception e) {
            Log.e(TAG, "setAppUsageState() is failed for " + mPackageName, e);
        }
    }

    /** Sets the {@link OptimizationMode} for associated app. */
    public void setAppUsageStateInternal(@OptimizationMode int mode) {
    public void setAppUsageState(@OptimizationMode int mode) {
        if (getAppOptimizationMode(mMode, mAllowListed) == mode) {
            Log.w(TAG, "set the same optimization mode for: " + mPackageName);
            return;
        }

        AsyncTask.execute(() -> {
            switch (mode) {
                case MODE_RESTRICTED:
                mBatteryUtils.setForceAppStandby(mUid, mPackageName, AppOpsManager.MODE_IGNORED);
                mPowerAllowListBackend.removeApp(mPackageName);
                    setAppOptimizationMode(AppOpsManager.MODE_IGNORED, /* allowListed */ false);
                    break;
                case MODE_UNRESTRICTED:
                mBatteryUtils.setForceAppStandby(mUid, mPackageName, AppOpsManager.MODE_ALLOWED);
                mPowerAllowListBackend.addApp(mPackageName);
                    setAppOptimizationMode(AppOpsManager.MODE_ALLOWED, /* allowListed */ true);
                    break;
                case MODE_OPTIMIZED:
                mBatteryUtils.setForceAppStandby(mUid, mPackageName, AppOpsManager.MODE_ALLOWED);
                mPowerAllowListBackend.removeApp(mPackageName);
                    setAppOptimizationMode(AppOpsManager.MODE_ALLOWED, /* allowListed */ false);
                    break;
                default:
                    Log.d(TAG, "set unknown app optimization mode.");
            }
        });
    }

    /**
@@ -142,6 +135,19 @@ public class BatteryOptimizeUtils {
        return mPackageName == null ? UNKNOWN_PACKAGE : mPackageName;
    }

    private void setAppOptimizationMode(int appStandbyMode, boolean allowListed) {
        try {
            mBatteryUtils.setForceAppStandby(mUid, mPackageName, appStandbyMode);
            if (allowListed) {
                mPowerAllowListBackend.addApp(mPackageName);
            } else {
                mPowerAllowListBackend.removeApp(mPackageName);
            }
        } catch (Exception e) {
            Log.e(TAG, "set OPTIMIZED failed for " + mPackageName, e);
        }
    }

    private void refreshState() {
        mPowerAllowListBackend.refreshList();
        mAllowListed = mPowerAllowListBackend.isAllowlisted(mPackageName);
+1 −7
Original line number Diff line number Diff line
@@ -73,12 +73,6 @@ public class OptimizedPreferenceController extends AbstractPreferenceController

    @Override
    public boolean handlePreferenceTreeClick(Preference preference) {
        if (!KEY_OPTIMIZED_PREF.equals(preference.getKey())) {
            return false;
        }

        mBatteryOptimizeUtils.setAppOptimizationMode(BatteryOptimizeUtils.MODE_OPTIMIZED);
        Log.d(TAG, "Set optimized");
        return true;
        return getPreferenceKey().equals(preference.getKey());
    }
}
+1 −7
Original line number Diff line number Diff line
@@ -76,12 +76,6 @@ public class RestrictedPreferenceController extends AbstractPreferenceController

    @Override
    public boolean handlePreferenceTreeClick(Preference preference) {
        if (!KEY_RESTRICTED_PREF.equals(preference.getKey())) {
            return false;
        }

        mBatteryOptimizeUtils.setAppOptimizationMode(BatteryOptimizeUtils.MODE_RESTRICTED);
        Log.d(TAG, "Set restricted");
        return true;
        return getPreferenceKey().equals(preference.getKey());
    }
}
Loading