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

Commit ceba4464 authored by Julia Reynolds's avatar Julia Reynolds Committed by Android (Google) Code Review
Browse files

Merge "Sort VICs to the top of the conversation section"

parents d29b4c52 dc07d049
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()