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

Commit 7676217e authored by Amith Yamasani's avatar Amith Yamasani
Browse files

Call noteAppRestrictionChanged when toggling restrictions/exemptions

This is to log the reasons for restriction level change and force stop

Bug: 333882527
Test: statsd_testdrive 863
      Toggle battery restrictions manually for an app and verify logging
      of reason
      atest BatteryOptimizeUtilsTest
Change-Id: Ifcc99efc1b6acc5a992f7d952967210b07319f2e
parent d1894bd8
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -558,6 +558,11 @@ public class AppButtonsPreferenceController extends BasePreferenceController imp
        ActivityManager am = (ActivityManager) mActivity.getSystemService(
                Context.ACTIVITY_SERVICE);
        Log.d(TAG, "Stopping package " + pkgName);
        if (android.app.Flags.appRestrictionsApi()) {
            am.noteAppRestrictionEnabled(pkgName, mAppEntry.info.uid,
                    ActivityManager.RESTRICTION_LEVEL_FORCE_STOPPED, true,
                    ActivityManager.RESTRICTION_REASON_USER, "settings", 0L);
        }
        am.forceStopPackage(pkgName);
        int userId = UserHandle.getUserId(mAppEntry.info.uid);
        mState.invalidatePackage(pkgName, userId);
+2 −2
Original line number Diff line number Diff line
@@ -345,9 +345,9 @@ public class BatteryOptimizeUtils {
        try {
            batteryUtils.setForceAppStandby(uid, packageName, appStandbyMode);
            if (allowListed) {
                powerAllowlistBackend.addApp(packageName);
                powerAllowlistBackend.addApp(packageName, uid);
            } else {
                powerAllowlistBackend.removeApp(packageName);
                powerAllowlistBackend.removeApp(packageName, uid);
            }
        } catch (Exception e) {
            // Error cases, set standby mode as -1 for logging.
+9 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
 */
package com.android.settings.fuelgauge;

import android.app.ActivityManager;
import android.app.AppOpsManager;
import android.content.Context;
import android.content.Intent;
@@ -386,6 +387,14 @@ public class BatteryUtils {
            // Control whether app could run in the background if it is pre O app
            mAppOpsManager.setMode(AppOpsManager.OP_RUN_IN_BACKGROUND, uid, packageName, mode);
        }
        // Notify system of reason for change
        if (isForceAppStandbyEnabled(uid, packageName) != (mode == AppOpsManager.MODE_IGNORED)) {
            mContext.getSystemService(ActivityManager.class).noteAppRestrictionEnabled(
                    packageName, uid, ActivityManager.RESTRICTION_LEVEL_BACKGROUND_RESTRICTED,
                    mode == AppOpsManager.MODE_IGNORED,
                    ActivityManager.RESTRICTION_REASON_USER,
                    "settings", 0);
        }
        // Control whether app could run jobs in the background
        mAppOpsManager.setMode(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, uid, packageName, mode);

+2 −2
Original line number Diff line number Diff line
@@ -142,9 +142,9 @@ public class HighPowerDetail extends InstrumentedDialogFragment
                if (newValue) {
                    mBatteryUtils.setForceAppStandby(
                            mPackageUid, mPackageName, AppOpsManager.MODE_ALLOWED);
                    mBackend.addApp(mPackageName);
                    mBackend.addApp(mPackageName, mPackageUid);
                } else {
                    mBackend.removeApp(mPackageName);
                    mBackend.removeApp(mPackageName, mPackageUid);
                }
            }
        }
+8 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.settings.spa.app.appinfo

import android.app.ActivityManager
import android.app.settings.SettingsEnums
import android.content.Context
import android.content.Intent
@@ -154,6 +155,13 @@ class PackageInfoPresenter(
        logAction(SettingsEnums.ACTION_APP_FORCE_STOP)
        coroutineScope.launch(Dispatchers.Default) {
            Log.d(TAG, "Stopping package $packageName")
            if (android.app.Flags.appRestrictionsApi()) {
                val uid = userPackageManager.getPackageUid(packageName, 0)
                context.activityManager.noteAppRestrictionEnabled(
                    packageName, uid,
                    ActivityManager.RESTRICTION_LEVEL_FORCE_STOPPED, true,
                    ActivityManager.RESTRICTION_REASON_USER, "settings", 0)
            }
            context.activityManager.forceStopPackageAsUser(packageName, userId)
        }
    }
Loading