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

Commit efdf00bf authored by Manjeet Rulhania's avatar Manjeet Rulhania
Browse files

Fix printing duplicate logs to save on battery

Adding state to remember if a log for missing activity manager
is already printed or not.

Bug: 202092164
Test: Manual
Change-Id: Ia945a7396d06f7e8a3fc12359583970faed06a72
parent f3de3fee
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -1486,6 +1486,10 @@ public final class PermissionManager {
        }
    }

    // Only warn once for assuming that root or system UID has a permission
    // to reduce duplicate logcat output.
    private static volatile boolean sShouldWarnMissingActivityManager = true;

    /* @hide */
    private static int checkPermissionUncached(@Nullable String permission, int pid, int uid) {
        final IActivityManager am = ActivityManager.getService();
@@ -1495,8 +1499,11 @@ public final class PermissionManager {
            // permission this is.
            final int appId = UserHandle.getAppId(uid);
            if (appId == Process.ROOT_UID || appId == Process.SYSTEM_UID) {
                if (sShouldWarnMissingActivityManager) {
                    Slog.w(LOG_TAG, "Missing ActivityManager; assuming " + uid + " holds "
                            + permission);
                    sShouldWarnMissingActivityManager = false;
                }
                return PackageManager.PERMISSION_GRANTED;
            }
            Slog.w(LOG_TAG, "Missing ActivityManager; assuming " + uid + " does not hold "
@@ -1504,6 +1511,7 @@ public final class PermissionManager {
            return PackageManager.PERMISSION_DENIED;
        }
        try {
            sShouldWarnMissingActivityManager = true;
            return am.checkPermission(permission, pid, uid);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();