Merge "Sort VICs to the top of the conversation section"
This commit is contained in:
committed by
Android (Google) Code Review
commit
ceba44649f
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user