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

Commit 1a22b13d authored by Julia Reynolds's avatar Julia Reynolds
Browse files

Attribute notifications to their original channels

Since the UI doesn't show channel details for bundle channels
anymore

Test: NotificationHistoryProtoHelperTest
Flag: android.app.notification_classification_ui
Fixes: 416040573

Change-Id: I4aab6896c6ff256b7fa8bef9f28d7a131c9a76fc
parent 2e27b9f5
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -315,7 +315,9 @@ public final class NotificationHistory implements Parcelable {
        for (int i = 0; i < mNotificationsToWrite.size(); i++) {
            final HistoricalNotification notification = mNotificationsToWrite.get(i);
            mStringsToWrite.add(notification.getPackage());
            if (!TextUtils.isEmpty(notification.getChannelName())) {
                mStringsToWrite.add(notification.getChannelName());
            }
            mStringsToWrite.add(notification.getChannelId());
            if (!TextUtils.isEmpty(notification.getConversationId())) {
                mStringsToWrite.add(notification.getConversationId());
+1 −1
Original line number Diff line number Diff line
@@ -248,7 +248,7 @@ public class NotificationHistoryManager {
                final NotificationHistoryDatabase userHistory =
                        getUserHistoryAndInitializeIfNeededLocked(notification.getUserId());
                if (userHistory == null) {
                    Slog.w(TAG, "Attempted to add notif for locked/gone/disabled user "
                    Slog.v(TAG, "Attempted to add notif for locked/gone/disabled user "
                            + notification.getUserId());
                    return;
                }
+14 −9
Original line number Diff line number Diff line
@@ -106,8 +106,10 @@ final class NotificationHistoryProtoHelper {
                    break;
                case (int) Notification.CHANNEL_NAME:
                    String channelName = parser.readString(Notification.CHANNEL_NAME);
                    if (!TextUtils.isEmpty(channelName)) {
                        notification.setChannelName(channelName);
                        stringPool.add(channelName);
                    }
                    break;
                case (int) Notification.CHANNEL_NAME_INDEX:
                    notification.setChannelName(stringPool.get(parser.readInt(
@@ -266,7 +268,9 @@ final class NotificationHistoryProtoHelper {
                    + ") not found in string cache");
            proto.write(Notification.PACKAGE, notification.getPackage());
        }
        final int channelNameIndex = Arrays.binarySearch(stringPool, notification.getChannelName());
        if (!TextUtils.isEmpty(notification.getChannelName())) {
            final int channelNameIndex = Arrays.binarySearch(stringPool,
                    notification.getChannelName());
            if (channelNameIndex >= 0) {
                proto.write(Notification.CHANNEL_NAME_INDEX, channelNameIndex + 1);
            } else {
@@ -274,6 +278,7 @@ final class NotificationHistoryProtoHelper {
                        + ") not found in string cache");
                proto.write(Notification.CHANNEL_NAME, notification.getChannelName());
            }
        }
        final int channelIdIndex = Arrays.binarySearch(stringPool, notification.getChannelId());
        if (channelIdIndex >= 0) {
            proto.write(Notification.CHANNEL_ID_INDEX, channelIdIndex + 1);
+13 −6
Original line number Diff line number Diff line
@@ -3872,23 +3872,30 @@ public class NotificationManagerService extends SystemService {
    @GuardedBy("mNotificationLock")
    protected void maybeRecordInterruptionLocked(NotificationRecord r) {
        if (r.isInterruptive() && !r.hasRecordedInterruption()) {
            String channelId = r.getChannel().getId();
            if (android.app.Flags.notificationClassificationUi()) {
                channelId = r.getNotification().getChannelId();
            }
            mAppUsageStats.reportInterruptiveNotification(r.getSbn().getPackageName(),
                    r.getChannel().getId(),
                    channelId,
                    getRealUserId(r.getSbn().getUserId()));
            Trace.traceBegin(Trace.TRACE_TAG_SYSTEM_SERVER, "notifHistoryAddItem");
            try {
                if (r.getNotification().getSmallIcon() != null) {
                    mHistoryManager.addNotification(new HistoricalNotification.Builder()
                    final HistoricalNotification.Builder builder
                            = new HistoricalNotification.Builder()
                            .setPackage(r.getSbn().getPackageName())
                            .setUid(r.getSbn().getUid())
                            .setUserId(r.getSbn().getNormalizedUserId())
                            .setChannelId(r.getChannel().getId())
                            .setChannelName(r.getChannel().getName().toString())
                            .setChannelId(channelId)
                            .setPostedTimeMs(System.currentTimeMillis())
                            .setTitle(getHistoryTitle(r.getNotification()))
                            .setText(getHistoryText(r.getNotification()))
                            .setIcon(r.getNotification().getSmallIcon())
                            .build());
                            .setIcon(r.getNotification().getSmallIcon());
                    if (!android.app.Flags.notificationClassificationUi()) {
                        builder.setChannelName(r.getChannel().getName().toString());
                    }
                    mHistoryManager.addNotification(builder.build());
                }
            } finally {
                Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER);
+19 −6
Original line number Diff line number Diff line
@@ -49,7 +49,10 @@ public class NotificationHistoryProtoHelperTest extends UiServiceTestCase {
    }

    private HistoricalNotification getHistoricalNotification(String packageName, int index) {
        String expectedChannelName = "channelName" + index;
        String expectedChannelName = null;
        if (index % 2 == 0) {
            expectedChannelName = "channelName" + index;
        }
        String expectedChannelId = "channelId" + index;
        int expectedUid = 1123456 + index;
        int expectedUserId = 11 + index;
@@ -143,7 +146,9 @@ public class NotificationHistoryProtoHelperTest extends UiServiceTestCase {

            if (i % 2 == 0) {
                expectedStrings.add(n.getPackage());
                if (i % 2 == 0) {
                    expectedStrings.add(n.getChannelName());
                }
                expectedStrings.add(n.getChannelId());
                if (!TextUtils.isEmpty(n.getConversationId())) {
                    expectedStrings.add(n.getConversationId());
@@ -185,7 +190,9 @@ public class NotificationHistoryProtoHelperTest extends UiServiceTestCase {

            if (i <= maxCount) {
                expectedStrings.add(n.getPackage());
                if (i % 2 == 0) {
                    expectedStrings.add(n.getChannelName());
                }
                expectedStrings.add(n.getChannelId());
                if (!TextUtils.isEmpty(n.getConversationId())) {
                    expectedStrings.add(n.getConversationId());
@@ -237,7 +244,9 @@ public class NotificationHistoryProtoHelperTest extends UiServiceTestCase {

            if (i <= (maxCount - 2)) {
                expectedStrings.add(n.getPackage());
                if (i % 2 == 0) {
                    expectedStrings.add(n.getChannelName());
                }
                expectedStrings.add(n.getChannelId());
                if (n.getConversationId() != null) {
                    expectedStrings.add(n.getConversationId());
@@ -277,7 +286,9 @@ public class NotificationHistoryProtoHelperTest extends UiServiceTestCase {
            HistoricalNotification n = getHistoricalNotification(i);
            expectedEntries.add(n);
            expectedStrings.add(n.getPackage());
            if (i % 2 == 0) {
                expectedStrings.add(n.getChannelName());
            }
            expectedStrings.add(n.getChannelId());
            if (n.getConversationId() != null) {
                expectedStrings.add(n.getConversationId());
@@ -295,7 +306,9 @@ public class NotificationHistoryProtoHelperTest extends UiServiceTestCase {
            HistoricalNotification n = getHistoricalNotification(i);
            expectedEntries.add(n);
            expectedStrings.add(n.getPackage());
            if (i % 2 == 0) {
                expectedStrings.add(n.getChannelName());
            }
            expectedStrings.add(n.getChannelId());
            if (n.getConversationId() != null) {
                expectedStrings.add(n.getConversationId());