Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationRankingManager.kt +9 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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) Loading @@ -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) Loading Loading @@ -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) } Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/people/PeopleNotificationIdentifier.kt +4 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotificationRankingManagerTest.kt +41 −0 Original line number Diff line number Diff line Loading @@ -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() Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationRankingManager.kt +9 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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) Loading @@ -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) Loading Loading @@ -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) } Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/people/PeopleNotificationIdentifier.kt +4 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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
packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotificationRankingManagerTest.kt +41 −0 Original line number Diff line number Diff line Loading @@ -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() Loading