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

Commit 8dff29c4 authored by Chris Tate's avatar Chris Tate Committed by android-build-merger
Browse files

Merge "Top apps may start fg services even when under bg restriction" into qt-dev

am: 68fa9376

Change-Id: I2c3bdb7b273edf040c4e76c8cddf21843b715691
parents 728ce437 68fa9376
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -828,6 +828,13 @@ public final class ActiveServices {
                        sb.append(compName);
                        Slog.w(TAG, sb.toString());
                        stopping.add(service);

                        // If the app is under bg restrictions, also make sure that
                        // any notification is dismissed
                        if (appRestrictedAnyInBackground(
                                service.appInfo.uid, service.packageName)) {
                            cancelForegroundNotificationLocked(service);
                        }
                    }
                }
            }
@@ -1232,6 +1239,10 @@ public final class ActiveServices {
        }
    }

    private boolean appIsTopLocked(int uid) {
        return mAm.getUidState(uid) <= ActivityManager.PROCESS_STATE_TOP;
    }

    /**
     * @param id Notification ID.  Zero === exit foreground state for the given service.
     */
@@ -1318,8 +1329,11 @@ public final class ActiveServices {
                        throw new SecurityException("Foreground not allowed as per app op");
                }

                if (!ignoreForeground &&
                        appRestrictedAnyInBackground(r.appInfo.uid, r.packageName)) {
                // Apps that are TOP or effectively similar may call startForeground() on
                // their services even if they are restricted from doing that while in bg.
                if (!ignoreForeground
                        && !appIsTopLocked(r.appInfo.uid)
                        && appRestrictedAnyInBackground(r.appInfo.uid, r.packageName)) {
                    Slog.w(TAG,
                            "Service.startForeground() not allowed due to bg restriction: service "
                            + r.shortInstanceName);