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

Commit c6c639cb authored by Selim Cinek's avatar Selim Cinek
Browse files

Fixed the ordering of colorized media notifications

Previously colorized media notifications were downranked if they
were not foreground services. This could lead to bugs where
colorized notifications were ranked below non-colorized ones.

Test: runtest systemui-notification
Bug: 38049452
Change-Id: I8652de55acff0b03fa337478ad7ad463ecc4e82d
parent f323e3a5
Loading
Loading
Loading
Loading
+3 −6
Original line number Original line Diff line number Diff line
@@ -48,8 +48,8 @@ public class NotificationComparator
    @Override
    @Override
    public int compare(NotificationRecord left, NotificationRecord right) {
    public int compare(NotificationRecord left, NotificationRecord right) {
        // first all colorized notifications
        // first all colorized notifications
        boolean leftImportantColorized = isImportantOngoingColorized(left);
        boolean leftImportantColorized = isImportantColorized(left);
        boolean rightImportantColorized = isImportantOngoingColorized(right);
        boolean rightImportantColorized = isImportantColorized(right);


        if (leftImportantColorized != rightImportantColorized) {
        if (leftImportantColorized != rightImportantColorized) {
            return -1 * Boolean.compare(leftImportantColorized, rightImportantColorized);
            return -1 * Boolean.compare(leftImportantColorized, rightImportantColorized);
@@ -110,10 +110,7 @@ public class NotificationComparator
        return -1 * Long.compare(left.getRankingTimeMs(), right.getRankingTimeMs());
        return -1 * Long.compare(left.getRankingTimeMs(), right.getRankingTimeMs());
    }
    }


    private boolean isImportantOngoingColorized(NotificationRecord record) {
    private boolean isImportantColorized(NotificationRecord record) {
        if (!isOngoing(record)) {
            return false;
        }
        if (record.getImportance() < NotificationManager.IMPORTANCE_LOW) {
        if (record.getImportance() < NotificationManager.IMPORTANCE_LOW) {
            return false;
            return false;
        }
        }
+12 −2
Original line number Original line Diff line number Diff line
@@ -76,7 +76,7 @@ public class NotificationComparatorTest {
    private NotificationRecord mRecordUrgent;
    private NotificationRecord mRecordUrgent;
    private NotificationRecord mRecordCheater;
    private NotificationRecord mRecordCheater;
    private NotificationRecord mRecordCheaterColorized;
    private NotificationRecord mRecordCheaterColorized;

    private NotificationRecord mNoMediaSessionMedia;


    @Before
    @Before
    public void setUp() {
    public void setUp() {
@@ -124,7 +124,6 @@ public class NotificationComparatorTest {
        Notification n3 = new Notification.Builder(mContext, TEST_CHANNEL_ID)
        Notification n3 = new Notification.Builder(mContext, TEST_CHANNEL_ID)
                .setStyle(new Notification.MediaStyle()
                .setStyle(new Notification.MediaStyle()
                        .setMediaSession(new MediaSession.Token(null)))
                        .setMediaSession(new MediaSession.Token(null)))
                .setFlag(Notification.FLAG_FOREGROUND_SERVICE, true)
                .build();
                .build();
        mRecordDefaultMedia = new NotificationRecord(mContext, new StatusBarNotification(pkg2,
        mRecordDefaultMedia = new NotificationRecord(mContext, new StatusBarNotification(pkg2,
                pkg2, 1, "media", uid2, uid2, n3, new UserHandle(userId),
                pkg2, 1, "media", uid2, uid2, n3, new UserHandle(userId),
@@ -192,6 +191,16 @@ public class NotificationComparatorTest {
                pkg2, 1, "cheater", uid2, uid2, n11, new UserHandle(userId),
                pkg2, 1, "cheater", uid2, uid2, n11, new UserHandle(userId),
                "", 9258), getDefaultChannel());
                "", 9258), getDefaultChannel());
        mRecordCheaterColorized.setUserImportance(NotificationManager.IMPORTANCE_LOW);
        mRecordCheaterColorized.setUserImportance(NotificationManager.IMPORTANCE_LOW);

        Notification n12 = new Notification.Builder(mContext, TEST_CHANNEL_ID)
                .setCategory(Notification.CATEGORY_MESSAGE)
                .setColorized(true)
                .setStyle(new Notification.MediaStyle())
                .build();
        mNoMediaSessionMedia = new NotificationRecord(mContext, new StatusBarNotification(
                pkg2, pkg2, 1, "cheater", uid2, uid2, n12, new UserHandle(userId),
                "", 9258), getDefaultChannel());
        mNoMediaSessionMedia.setUserImportance(NotificationManager.IMPORTANCE_DEFAULT);
    }
    }


    @Test
    @Test
@@ -205,6 +214,7 @@ public class NotificationComparatorTest {
        expected.add(mRecordContact);
        expected.add(mRecordContact);
        expected.add(mRecordEmail);
        expected.add(mRecordEmail);
        expected.add(mRecordUrgent);
        expected.add(mRecordUrgent);
        expected.add(mNoMediaSessionMedia);
        expected.add(mRecordCheater);
        expected.add(mRecordCheater);
        expected.add(mRecordCheaterColorized);
        expected.add(mRecordCheaterColorized);
        expected.add(mRecordMinCall);
        expected.add(mRecordMinCall);