summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/EventLogTags.logtags2
-rw-r--r--services/core/java/com/android/server/notification/NotificationManagerService.java3
-rw-r--r--services/core/java/com/android/server/notification/NotificationRecord.java13
3 files changed, 16 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/EventLogTags.logtags b/services/core/java/com/android/server/EventLogTags.logtags
index 694e851ef364..a2273419ab76 100644
--- a/services/core/java/com/android/server/EventLogTags.logtags
+++ b/services/core/java/com/android/server/EventLogTags.logtags
@@ -72,7 +72,7 @@ option java_package com.android.server
# when a notification action button has been clicked
27521 notification_action_clicked (key|3),(action_index|1)
# when a notification has been canceled
-27530 notification_canceled (key|3),(reason|1)
+27530 notification_canceled (key|3),(reason|1),(lifespan|1)
# ---------------------------
# Watchdog.java
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index b6f8e9886304..82da9239a49a 100644
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -2663,7 +2663,8 @@ public class NotificationManagerService extends SystemService {
// Save it for users of getHistoricalNotifications()
mArchive.record(r.sbn);
- EventLogTags.writeNotificationCanceled(canceledKey, reason);
+ int lifespan = (int) (System.currentTimeMillis() - r.getCreationTimeMs());
+ EventLogTags.writeNotificationCanceled(canceledKey, reason, lifespan);
}
/**
diff --git a/services/core/java/com/android/server/notification/NotificationRecord.java b/services/core/java/com/android/server/notification/NotificationRecord.java
index 39fd9ab54cfa..5569a09d13df 100644
--- a/services/core/java/com/android/server/notification/NotificationRecord.java
+++ b/services/core/java/com/android/server/notification/NotificationRecord.java
@@ -62,6 +62,9 @@ public final class NotificationRecord {
// The timestamp used for ranking.
private long mRankingTimeMs;
+ // The first post time, stable across updates.
+ private long mCreationTimeMs;
+
// Is this record an update of an old record?
public boolean isUpdate;
private int mPackagePriority;
@@ -77,6 +80,7 @@ public final class NotificationRecord {
this.score = score;
mOriginalFlags = sbn.getNotification().flags;
mRankingTimeMs = calculateRankingTimeMs(0L);
+ mCreationTimeMs = sbn.getPostTime();
}
// copy any notes that the ranking system may have made before the update
@@ -87,6 +91,7 @@ public final class NotificationRecord {
mPackageVisibility = previous.mPackageVisibility;
mIntercept = previous.mIntercept;
mRankingTimeMs = calculateRankingTimeMs(previous.getRankingTimeMs());
+ mCreationTimeMs = previous.mCreationTimeMs;
// Don't copy mGlobalSortKey, recompute it.
}
@@ -167,6 +172,7 @@ public final class NotificationRecord {
pw.println(prefix + " mIntercept=" + mIntercept);
pw.println(prefix + " mGlobalSortKey=" + mGlobalSortKey);
pw.println(prefix + " mRankingTimeMs=" + mRankingTimeMs);
+ pw.println(prefix + " mCreationTimeMs=" + mCreationTimeMs);
}
@@ -263,6 +269,13 @@ public final class NotificationRecord {
}
/**
+ * Returns the timestamp of the first post, ignoring updates.
+ */
+ public long getCreationTimeMs() {
+ return mCreationTimeMs;
+ }
+
+ /**
* @param previousRankingTimeMs for updated notifications, {@link #getRankingTimeMs()}
* of the previous notification record, 0 otherwise
*/