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

Commit dc07d049 authored by Julia Reynolds's avatar Julia Reynolds
Browse files

Sort VICs to the top of the conversation section

Test: atest
Fixes: 149486189
Change-Id: Ic5fe4c6d7d9c910300b4b16cb664ea84c3b2d13a
parent 03bced0a
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import com.android.systemui.statusbar.notification.stack.NotificationSectionsMan
import com.android.systemui.statusbar.phone.NotificationGroupManager
import com.android.systemui.statusbar.policy.HeadsUpManager
import dagger.Lazy
import java.util.Comparator
import java.util.Objects
import javax.inject.Inject

@@ -73,6 +74,9 @@ open class NotificationRankingManager @Inject constructor(
        val aIsPeople = a.isPeopleNotification()
        val bIsPeople = b.isPeopleNotification()

        val aIsImportantPeople = a.isImportantPeopleNotification()
        val bIsImportantPeople = b.isImportantPeopleNotification()

        val aMedia = isImportantMedia(a)
        val bMedia = isImportantMedia(b)

@@ -87,6 +91,8 @@ open class NotificationRankingManager @Inject constructor(

        when {
            usePeopleFiltering && aIsPeople != bIsPeople -> if (aIsPeople) -1 else 1
            usePeopleFiltering && aIsImportantPeople != bIsImportantPeople ->
                if (aIsImportantPeople) -1 else 1
            aHeadsUp != bHeadsUp -> if (aHeadsUp) -1 else 1
            // Provide consistent ranking with headsUpManager
            aHeadsUp -> headsUpManager.compare(a, b)
@@ -192,6 +198,9 @@ open class NotificationRankingManager @Inject constructor(
    private fun NotificationEntry.isPeopleNotification() =
            peopleNotificationIdentifier.isPeopleNotification(sbn, ranking)

    private fun NotificationEntry.isImportantPeopleNotification() =
            peopleNotificationIdentifier.isImportantPeopleNotification(sbn, ranking)

    private fun NotificationEntry.isHighPriority() =
            highPriorityProvider.isHighPriority(this)
}
+4 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import javax.inject.Singleton

interface PeopleNotificationIdentifier {
    fun isPeopleNotification(sbn: StatusBarNotification, ranking: Ranking): Boolean
    fun isImportantPeopleNotification(sbn: StatusBarNotification, ranking: Ranking): Boolean
}

@Singleton
@@ -32,4 +33,7 @@ class PeopleNotificationIdentifierImpl @Inject constructor(

    override fun isPeopleNotification(sbn: StatusBarNotification, ranking: Ranking) =
            ranking.isConversation || personExtractor.isPersonNotification(sbn)

    override fun isImportantPeopleNotification(sbn: StatusBarNotification, ranking: Ranking) =
            isPeopleNotification(sbn, ranking) && ranking.channel.isImportantConversation
}
 No newline at end of file
+41 −0
Original line number Diff line number Diff line
@@ -144,6 +144,47 @@ class NotificationRankingManagerTest : SysuiTestCase() {
                rankingManager.updateRanking(null, listOf(a, b), "test"))
    }

    @Test
    fun testSort_importantPeople() {
        val aN = Notification.Builder(mContext, "test")
                .setStyle(Notification.MessagingStyle(""))
                .build()
        val aC = NotificationChannel("test", "", IMPORTANCE_DEFAULT)
        aC.setConversationId("parent", "convo")
        val a = NotificationEntryBuilder()
                .setImportance(IMPORTANCE_HIGH)
                .setPkg("pkg")
                .setOpPkg("pkg")
                .setTag("tag")
                .setNotification(aN)
                .setChannel(aC)
                .setUser(mContext.getUser())
                .setOverrideGroupKey("")
                .build()

        val bN = Notification.Builder(mContext, "test")
                .setStyle(Notification.MessagingStyle(""))
                .build()
        val bC = NotificationChannel("test", "", IMPORTANCE_DEFAULT)
        bC.setConversationId("parent", "convo")
        bC.setImportantConversation(true)
        val b = NotificationEntryBuilder()
                .setImportance(IMPORTANCE_HIGH)
                .setPkg("pkg2")
                .setOpPkg("pkg2")
                .setTag("tag")
                .setNotification(bN)
                .setChannel(bC)
                .setUser(mContext.getUser())
                .setOverrideGroupKey("")
                .build()


        assertEquals(
                listOf(b, a),
                rankingManager.updateRanking(null, listOf(a, b), "test"))
    }

    @Test
    fun testSort_properlySetsAlertingBucket() {
        val notif = Notification.Builder(mContext, "test") .build()