diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java index b116246586b57..fb16d6ee6b010 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java @@ -61,6 +61,7 @@ import android.service.notification.NotificationListenerService.Ranking; import android.service.notification.NotificationListenerService.RankingMap; import android.service.notification.StatusBarNotification; import android.util.ArrayMap; +import android.util.Log; import android.util.Pair; import androidx.annotation.NonNull; @@ -513,10 +514,16 @@ public class NotifCollection implements Dumpable, PipelineDumpable { * @return True if the notification was removed, false otherwise. */ private boolean tryRemoveNotification(NotificationEntry entry) { - if (mNotificationSet.get(entry.getKey()) != entry) { + final NotificationEntry storedEntry = mNotificationSet.get(entry.getKey()); + if (storedEntry == null) { + Log.wtf(TAG, "TRY REMOVE non-existent notification " + logKey(entry)); + return false; + } else if (storedEntry != entry) { throw mEulogizer.record( - new IllegalStateException("No notification to remove with key " - + logKey(entry))); + new IllegalStateException("Mismatched stored and tryRemoved entries" + + " for key " + logKey(entry) + ":" + + " stored=@" + Integer.toHexString(storedEntry.hashCode()) + + " tryRemoved=@" + Integer.toHexString(entry.hashCode()))); } if (!entry.isCanceled()) {