diff options
| author | 2020-05-01 13:21:28 +0000 | |
|---|---|---|
| committer | 2020-05-01 13:21:28 +0000 | |
| commit | b36bf3d231e6c91df8d39c590a4de1cd08edd636 (patch) | |
| tree | 54f00a7135081b48144a7623a145facd9a822a3d | |
| parent | 06028798b9e8ca1f42aa5791c6881a798ec68171 (diff) | |
| parent | 8da8c8e768f7a4d6a739296ba4031d1192a7886d (diff) | |
Merge "Statsd logs: NotificationReported.group_instance_id." into rvc-dev
5 files changed, 53 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 76acf57db408..d007b77c3203 100755 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -235,6 +235,7 @@ import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.compat.IPlatformCompat; import com.android.internal.config.sysui.SystemUiDeviceConfigFlags; +import com.android.internal.logging.InstanceId; import com.android.internal.logging.InstanceIdSequence; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto; @@ -6490,7 +6491,7 @@ public class NotificationManagerService extends SystemService { // Log event to statsd mNotificationRecordLogger.maybeLogNotificationPosted(r, old, position, - buzzBeepBlinkLoggingCode); + buzzBeepBlinkLoggingCode, getGroupInstanceId(n.getGroupKey())); } finally { int N = mEnqueuedNotifications.size(); for (int i = 0; i < N; i++) { @@ -6506,6 +6507,21 @@ public class NotificationManagerService extends SystemService { } /** + * + */ + @GuardedBy("mNotificationLock") + InstanceId getGroupInstanceId(String groupKey) { + if (groupKey == null) { + return null; + } + NotificationRecord group = mSummaryByGroupKey.get(groupKey); + if (group == null) { + return null; + } + return group.getSbn().getInstanceId(); + } + + /** * If the notification differs enough visually, consider it a new interruptive notification. */ @GuardedBy("mNotificationLock") diff --git a/services/core/java/com/android/server/notification/NotificationRecordLogger.java b/services/core/java/com/android/server/notification/NotificationRecordLogger.java index eba57304124a..34e6ec18be88 100644 --- a/services/core/java/com/android/server/notification/NotificationRecordLogger.java +++ b/services/core/java/com/android/server/notification/NotificationRecordLogger.java @@ -27,6 +27,7 @@ import android.os.Bundle; import android.service.notification.NotificationListenerService; import android.service.notification.NotificationStats; +import com.android.internal.logging.InstanceId; import com.android.internal.logging.UiEvent; import com.android.internal.logging.UiEventLogger; @@ -48,10 +49,12 @@ public interface NotificationRecordLogger { * @param old The previous NotificationRecord. Null if there was no previous record. * @param position The position at which this notification is ranked. * @param buzzBeepBlink Logging code reflecting whether this notification alerted the user. + * @param groupId The instance Id of the group summary notification, or null. */ void maybeLogNotificationPosted(@Nullable NotificationRecord r, @Nullable NotificationRecord old, - int position, int buzzBeepBlink); + int position, int buzzBeepBlink, + InstanceId groupId); /** * Logs a notification cancel / dismiss event using UiEventReported (event ids from the diff --git a/services/core/java/com/android/server/notification/NotificationRecordLoggerImpl.java b/services/core/java/com/android/server/notification/NotificationRecordLoggerImpl.java index 494ff314a8aa..c6ec95a2e1d5 100644 --- a/services/core/java/com/android/server/notification/NotificationRecordLoggerImpl.java +++ b/services/core/java/com/android/server/notification/NotificationRecordLoggerImpl.java @@ -16,6 +16,7 @@ package com.android.server.notification; +import com.android.internal.logging.InstanceId; import com.android.internal.logging.UiEventLogger; import com.android.internal.logging.UiEventLoggerImpl; import com.android.internal.util.FrameworkStatsLog; @@ -30,7 +31,8 @@ public class NotificationRecordLoggerImpl implements NotificationRecordLogger { @Override public void maybeLogNotificationPosted(NotificationRecord r, NotificationRecord old, - int position, int buzzBeepBlink) { + int position, int buzzBeepBlink, + InstanceId groupId) { NotificationRecordPair p = new NotificationRecordPair(r, old); if (!p.shouldLogReported(buzzBeepBlink)) { return; @@ -43,7 +45,7 @@ public class NotificationRecordLoggerImpl implements NotificationRecordLogger { /* int32 notification_id_hash = 5 */ p.getNotificationIdHash(), /* int32 channel_id_hash = 6 */ p.getChannelIdHash(), /* string group_id_hash = 7 */ p.getGroupIdHash(), - /* int32 group_instance_id = 8 */ 0, // TODO generate and fill instance ids + /* int32 group_instance_id = 8 */ (groupId == null) ? 0 : groupId.getId(), /* bool is_group_summary = 9 */ r.getSbn().getNotification().isGroupSummary(), /* string category = 10 */ r.getSbn().getNotification().category, /* int32 style = 11 */ p.getStyle(), diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java index d5ecfeb55e95..e644f64cf307 100755 --- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java @@ -1772,6 +1772,28 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { } @Test + public void testGroupInstanceIds() throws Exception { + final NotificationRecord group1 = generateNotificationRecord( + mTestNotificationChannel, 1, "group1", true); + mBinderService.enqueueNotificationWithTag(PKG, PKG, "testFindGroupNotificationsLocked", + group1.getSbn().getId(), group1.getSbn().getNotification(), + group1.getSbn().getUserId()); + waitForIdle(); + + // same group, child, should be returned + final NotificationRecord group1Child = generateNotificationRecord( + mTestNotificationChannel, 2, "group1", false); + mBinderService.enqueueNotificationWithTag(PKG, PKG, "testFindGroupNotificationsLocked", + group1Child.getSbn().getId(), + group1Child.getSbn().getNotification(), group1Child.getSbn().getUserId()); + waitForIdle(); + + assertEquals(2, mNotificationRecordLogger.numCalls()); + assertEquals(mNotificationRecordLogger.get(0).getInstanceId(), + mNotificationRecordLogger.get(1).groupInstanceId.getId()); + } + + @Test public void testFindGroupNotificationsLocked() throws Exception { // make sure the same notification can be found in both lists and returned final NotificationRecord group1 = generateNotificationRecord( diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationRecordLoggerFake.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationRecordLoggerFake.java index 6b18cc64c5fb..64fd19e69009 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationRecordLoggerFake.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationRecordLoggerFake.java @@ -16,6 +16,7 @@ package com.android.server.notification; +import com.android.internal.logging.InstanceId; import com.android.internal.logging.UiEventLogger; import java.util.ArrayList; @@ -32,14 +33,16 @@ class NotificationRecordLoggerFake implements NotificationRecordLogger { static final int INVALID = -1; public int position = INVALID, buzzBeepBlink = INVALID; public boolean wasLogged; + public InstanceId groupInstanceId; CallRecord(NotificationRecord r, NotificationRecord old, int position, - int buzzBeepBlink) { + int buzzBeepBlink, InstanceId groupId) { super(r, old); this.position = position; this.buzzBeepBlink = buzzBeepBlink; wasLogged = shouldLogReported(buzzBeepBlink); event = wasLogged ? NotificationReportedEvent.fromRecordPair(this) : null; + groupInstanceId = groupId; } CallRecord(NotificationRecord r, UiEventLogger.UiEventEnum event) { @@ -67,8 +70,8 @@ class NotificationRecordLoggerFake implements NotificationRecordLogger { @Override public void maybeLogNotificationPosted(NotificationRecord r, NotificationRecord old, - int position, int buzzBeepBlink) { - mCalls.add(new CallRecord(r, old, position, buzzBeepBlink)); + int position, int buzzBeepBlink, InstanceId groupId) { + mCalls.add(new CallRecord(r, old, position, buzzBeepBlink, groupId)); } @Override |