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

Commit 9d61128c authored by Chris Tate's avatar Chris Tate Committed by Automerger Merge Worker
Browse files

Merge "Don't defer FGS notification if it's already shown" into sc-dev am: 07d5fddf

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14414063

Change-Id: I93958f6fc232e793439a757b8cc9a5776786a242
parents 55752f8e 07d5fddf
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -155,6 +155,7 @@ import com.android.server.AppStateTracker;
import com.android.server.LocalServices;
import com.android.server.SystemService;
import com.android.server.am.ActivityManagerService.ItemMatcher;
import com.android.server.notification.NotificationManagerInternal;
import com.android.server.uri.NeededUriGrants;
import com.android.server.wm.ActivityServiceConnectionsHolder;

@@ -1976,6 +1977,17 @@ public final class ActiveServices {
            // DeviceConfig element has been set
            showNow = isLegacyApp && mAm.mConstants.mFlagFgsNotificationDeferralApiGated;
        }
        if (!showNow) {
            // did we already show it?
            showNow = r.mFgsNotificationShown;
        }
        if (!showNow) {
            // Is the notification already showing for any reason?
            final NotificationManagerInternal nmi =
                    LocalServices.getService(NotificationManagerInternal.class);
            showNow = nmi.isNotificationShown(r.appInfo.packageName, null,
                    r.foregroundId, UserHandle.getUserId(uid));
        }
        if (!showNow) {
            // has the app forced deferral?
            if (!r.foregroundNoti.isForegroundDisplayForceDeferred()) {
+3 −0
Original line number Diff line number Diff line
@@ -30,6 +30,9 @@ public interface NotificationManagerInternal {
    void cancelNotification(String pkg, String basePkg, int callingUid, int callingPid,
            String tag, int id, int userId);

    /** is the given notification currently showing? */
    boolean isNotificationShown(String pkg, String tag, int notificationId, int userId);

    void removeForegroundServiceFlagFromNotification(String pkg, int notificationId, int userId);

    void onConversationRemoved(String pkg, int uid, Set<String> shortcuts);
+7 −0
Original line number Diff line number Diff line
@@ -6049,6 +6049,13 @@ public class NotificationManagerService extends SystemService {
            cancelNotificationInternal(pkg, opPkg, callingUid, callingPid, tag, id, userId);
        }

        @Override
        public boolean isNotificationShown(String pkg, String tag, int notificationId, int userId) {
            synchronized (mNotificationLock) {
                return findNotificationLocked(pkg, tag, notificationId, userId) != null;
            }
        }

        @Override
        public void removeForegroundServiceFlagFromNotification(String pkg, int notificationId,
                int userId) {