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

Commit 97658e3a authored by Alex Johnston's avatar Alex Johnston Committed by Android (Google) Code Review
Browse files

Merge "Implement OP_SYSTEM_EXEMPT_FROM_POWER_RESTRICTIONS exemption"

parents cf9562be 2747dc6e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -96,7 +96,7 @@ public class AppStateAppBatteryUsageBridge extends AppStateBaseBridge {
        // Unrestricted = AppOpsManager.MODE_ALLOWED + allowListed
        // Optimized = AppOpsManager.MODE_ALLOWED + !allowListed

        boolean allowListed = mPowerAllowlistBackend.isAllowlisted(pkg);
        boolean allowListed = mPowerAllowlistBackend.isAllowlisted(pkg, uid);
        int aomMode =
                mAppOpsManager.checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, uid, pkg);
        @OptimizationMode int mode = MODE_UNKNOWN;
+2 −2
Original line number Diff line number Diff line
@@ -43,14 +43,14 @@ public class AppStatePowerBridge extends AppStateBaseBridge {
        final int N = apps.size();
        for (int i = 0; i < N; i++) {
            AppEntry app = apps.get(i);
            app.extraInfo = mBackend.isAllowlisted(app.info.packageName)
            app.extraInfo = mBackend.isAllowlisted(app.info.packageName, app.info.uid)
                    ? Boolean.TRUE : Boolean.FALSE;
        }
    }

    @Override
    protected void updateExtraInfo(AppEntry app, String pkg, int uid) {
        app.extraInfo = mBackend.isAllowlisted(pkg) ? Boolean.TRUE : Boolean.FALSE;
        app.extraInfo = mBackend.isAllowlisted(pkg, uid) ? Boolean.TRUE : Boolean.FALSE;
    }

    public static final AppFilter FILTER_POWER_ALLOWLISTED = new CompoundFilter(
+1 −1
Original line number Diff line number Diff line
@@ -1722,7 +1722,7 @@ public class ManageApplications extends InstrumentedFragment
            ApplicationsState.AppEntry entry = mEntries.get(applicationPosition);

            return !mBackend.isSysAllowlisted(entry.info.packageName)
                    && !mBackend.isDefaultActiveApp(entry.info.packageName);
                    && !mBackend.isDefaultActiveApp(entry.info.packageName, entry.info.uid);
        }

        @Override
+5 −4
Original line number Diff line number Diff line
@@ -153,7 +153,7 @@ public final class BatteryBackupHelper implements BackupHelper {
            // Ignores default optimized/unknown state or system/default apps.
            if (optimizationMode == BatteryOptimizeUtils.MODE_OPTIMIZED
                    || optimizationMode == BatteryOptimizeUtils.MODE_UNKNOWN
                    || isSystemOrDefaultApp(info.packageName)) {
                    || isSystemOrDefaultApp(info.packageName, info.uid)) {
                continue;
            }
            final String packageOptimizeMode =
@@ -191,8 +191,9 @@ public final class BatteryBackupHelper implements BackupHelper {
                continue;
            }
            final String packageName = results[0];
            final int uid = BatteryUtils.getInstance(mContext).getPackageUid(packageName);
            // Ignores system/default apps.
            if (isSystemOrDefaultApp(packageName)) {
            if (isSystemOrDefaultApp(packageName, uid)) {
                Log.w(TAG, "ignore from isSystemOrDefaultApp():" + packageName);
                continue;
            }
@@ -253,10 +254,10 @@ public final class BatteryBackupHelper implements BackupHelper {
        return mPowerAllowlistBackend;
    }

    private boolean isSystemOrDefaultApp(String packageName) {
    private boolean isSystemOrDefaultApp(String packageName, int uid) {
        final PowerAllowlistBackend powerAllowlistBackend = getPowerAllowlistBackend();
        return powerAllowlistBackend.isSysAllowlisted(packageName)
                || powerAllowlistBackend.isDefaultActiveApp(packageName);
                || powerAllowlistBackend.isDefaultActiveApp(packageName, uid);
    }

    private ArraySet<ApplicationInfo> getInstalledApplications() {
+7 −7
Original line number Diff line number Diff line
@@ -85,7 +85,7 @@ public class BatteryOptimizeUtils {
        mPowerAllowListBackend = PowerAllowlistBackend.getInstance(context);
        mMode = mAppOpsManager
                .checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, mUid, mPackageName);
        mAllowListed = mPowerAllowListBackend.isAllowlisted(mPackageName);
        mAllowListed = mPowerAllowListBackend.isAllowlisted(mPackageName, mUid);
    }

    /** Gets the {@link OptimizationMode} based on mode and allowed list. */
@@ -138,7 +138,7 @@ public class BatteryOptimizeUtils {
     */
    public boolean isSystemOrDefaultApp() {
        mPowerAllowListBackend.refreshList();
        return isSystemOrDefaultApp(mPowerAllowListBackend, mPackageName);
        return isSystemOrDefaultApp(mPowerAllowListBackend, mPackageName, mUid);
    }

    /**
@@ -186,11 +186,11 @@ public class BatteryOptimizeUtils {
                    AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, info.uid, info.packageName);
            @OptimizationMode
            final int optimizationMode = getAppOptimizationMode(
                    mode, allowlistBackend.isAllowlisted(info.packageName));
                    mode, allowlistBackend.isAllowlisted(info.packageName, info.uid));
            // Ignores default optimized/unknown state or system/default apps.
            if (optimizationMode == MODE_OPTIMIZED
                    || optimizationMode == MODE_UNKNOWN
                    || isSystemOrDefaultApp(allowlistBackend, info.packageName)) {
                    || isSystemOrDefaultApp(allowlistBackend, info.packageName, info.uid)) {
                continue;
            }

@@ -205,9 +205,9 @@ public class BatteryOptimizeUtils {
    }

    private static boolean isSystemOrDefaultApp(
            PowerAllowlistBackend powerAllowlistBackend, String packageName) {
            PowerAllowlistBackend powerAllowlistBackend, String packageName, int uid) {
        return powerAllowlistBackend.isSysAllowlisted(packageName)
                || powerAllowlistBackend.isDefaultActiveApp(packageName);
                || powerAllowlistBackend.isDefaultActiveApp(packageName, uid);
    }

    private static void setAppUsageStateInternal(
@@ -257,7 +257,7 @@ public class BatteryOptimizeUtils {

    private void refreshState() {
        mPowerAllowListBackend.refreshList();
        mAllowListed = mPowerAllowListBackend.isAllowlisted(mPackageName);
        mAllowListed = mPowerAllowListBackend.isAllowlisted(mPackageName, mUid);
        mMode = mAppOpsManager
                .checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, mUid, mPackageName);
        Log.d(TAG, String.format("refresh %s state, allowlisted = %s, mode = %d",
Loading