From f5b65590bff75cd739739ec68847294cb01ab6c3 Mon Sep 17 00:00:00 2001 From: Jeff DeCew Date: Sat, 7 May 2022 15:29:57 +0000 Subject: [PATCH] Improve logging in NotifCollection for when ending the LifetimeExtender fails or might fail. Bug: 227254780 Test: atest NotifCollectionTest Change-Id: Id9f50e84831a6f8cb2fa3ce6b8d1d200aebc9a06 --- .../collection/NotifCollection.java | 17 +++++++++++++---- .../notifcollection/NotifCollectionLogger.kt | 14 ++++++++++++++ 2 files changed, 27 insertions(+), 4 deletions(-) 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 6085096ee124e..410593ac54934 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 @@ -609,12 +609,21 @@ public class NotifCollection implements Dumpable { } checkForReentrantCall(); + NotificationEntry collectionEntry = getEntry(entry.getKey()); + String logKey = logKey(entry); + String collectionEntryIs = collectionEntry == null ? "null" + : entry == collectionEntry ? "same" : "different"; + + if (entry != collectionEntry) { + // TODO: We should probably make this throw, but that's too risky right now + mLogger.logEntryBeingExtendedNotInCollection(entry, extender, collectionEntryIs); + } + if (!entry.mLifetimeExtenders.remove(extender)) { throw mEulogizer.record(new IllegalStateException( - String.format( - "Cannot end lifetime extension for extender \"%s\" (%s)", - extender.getName(), - extender))); + String.format("Cannot end lifetime extension for extender \"%s\"" + + " of entry %s (collection entry is %s)", + extender.getName(), logKey, collectionEntryIs))); } mLogger.logLifetimeExtensionEnded( diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionLogger.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionLogger.kt index 7e7936717b84e..ac0b1ee6c442a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionLogger.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionLogger.kt @@ -248,6 +248,20 @@ class NotifCollectionLogger @Inject constructor( }) } + fun logEntryBeingExtendedNotInCollection( + entry: NotificationEntry, + extender: NotifLifetimeExtender, + collectionEntryIs: String + ) { + buffer.log(TAG, WARNING, { + str1 = entry.logKey + str2 = extender.name + str3 = collectionEntryIs + }, { + "While ending lifetime extension by $str2 of $str1, entry in collection is $str3" + }) + } + fun logFutureDismissalReused(dismissal: FutureDismissal) { buffer.log(TAG, INFO, { str1 = dismissal.label