diff options
author | 2025-03-24 13:12:40 -0700 | |
---|---|---|
committer | 2025-03-24 13:12:40 -0700 | |
commit | 815fdd8475cf205bf81f7c17db2c0b7e306fbe0b (patch) | |
tree | 92cb9339cddac9fcbfdd98ac6b87e5c5d8bdb5e9 /packages/SystemUI/src | |
parent | 1d34ea3817f5bba0336c4b60c552e2d3331aeec8 (diff) | |
parent | e5f4c3af2001358076b2f0bd32a72e03967fd252 (diff) |
Merge "Update all non-bundle sectioners to check isClassified" into main
Diffstat (limited to 'packages/SystemUI/src')
7 files changed, 79 insertions, 17 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/BundleUtil.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/BundleUtil.kt new file mode 100644 index 000000000000..47889c9c9429 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/BundleUtil.kt @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.statusbar.notification.collection.coordinator + +import android.app.NotificationChannel.SYSTEM_RESERVED_IDS +import com.android.systemui.statusbar.notification.collection.NotificationClassificationFlag +import com.android.systemui.statusbar.notification.collection.NotificationEntry +import com.android.systemui.statusbar.notification.collection.PipelineEntry + +/** + * Helper class for classified notifications. + */ +class BundleUtil { + companion object { + fun isClassified(pipelineEntry: PipelineEntry): Boolean { + if (pipelineEntry !is NotificationEntry) { + return false + } + if (pipelineEntry.getRepresentativeEntry()!!.channel == null) { + return false + } + val channelId = pipelineEntry.getRepresentativeEntry()!!.channel.id + if (SYSTEM_RESERVED_IDS.contains(channelId)) { + return true + } + return false + } + } +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ColorizedFgsCoordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ColorizedFgsCoordinator.java index c8ec85d0a227..b125e47b115c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ColorizedFgsCoordinator.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ColorizedFgsCoordinator.java @@ -97,11 +97,14 @@ public class ColorizedFgsCoordinator implements Coordinator { NotificationPriorityBucketKt.BUCKET_FOREGROUND_SERVICE) { @Override public boolean isInSection(PipelineEntry entry) { - NotificationEntry notificationEntry = entry.getRepresentativeEntry(); - if (notificationEntry != null) { - return isRichOngoing(notificationEntry) || isPromotedNotifChip(notificationEntry); + NotificationEntry notifEntry = entry.getRepresentativeEntry(); + if (notifEntry == null) { + return false; } - return false; + if (BundleUtil.Companion.isClassified(notifEntry)) { + return false; + } + return isRichOngoing(notifEntry) || isPromotedNotifChip(notifEntry); } /** get the sort key for any entry in the ongoing section */ diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ConversationCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ConversationCoordinator.kt index 28923b0ab71e..cc7e329068c8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ConversationCoordinator.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ConversationCoordinator.kt @@ -16,7 +16,6 @@ package com.android.systemui.statusbar.notification.collection.coordinator -import android.app.NotificationChannel.SYSTEM_RESERVED_IDS import com.android.systemui.statusbar.notification.collection.GroupEntry import com.android.systemui.statusbar.notification.collection.PipelineEntry import com.android.systemui.statusbar.notification.collection.NotifPipeline @@ -89,21 +88,24 @@ class ConversationCoordinator @Inject constructor( val priorityPeopleSectioner = object : NotifSectioner("Priority People", BUCKET_PRIORITY_PEOPLE) { override fun isInSection(entry: PipelineEntry): Boolean { + if (BundleUtil.isClassified(entry)) { + return false + } return getPeopleType(entry) == TYPE_IMPORTANT_PERSON - && entry.representativeEntry?.channel?.id !in SYSTEM_RESERVED_IDS } } // TODO(b/330193582): Rename to just "People" val peopleAlertingSectioner = object : NotifSectioner("People(alerting)", BUCKET_PEOPLE) { override fun isInSection(entry: PipelineEntry): Boolean { + if (BundleUtil.isClassified(entry)) { + return false + } if (SortBySectionTimeFlag.isEnabled) { return (highPriorityProvider.isHighPriorityConversation(entry) || isConversation(entry)) - && entry.representativeEntry?.channel?.id !in SYSTEM_RESERVED_IDS } else { return highPriorityProvider.isHighPriorityConversation(entry) - && entry.representativeEntry?.channel?.id !in SYSTEM_RESERVED_IDS } } @@ -119,8 +121,10 @@ class ConversationCoordinator @Inject constructor( // that are alerting. All remaining conversations must be silent. override fun isInSection(entry: PipelineEntry): Boolean { SortBySectionTimeFlag.assertInLegacyMode() + if (BundleUtil.isClassified(entry)) { + return false + } return isConversation(entry) - && entry.representativeEntry?.channel?.id !in SYSTEM_RESERVED_IDS } override fun getComparator(): NotifComparator { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/Coordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/Coordinator.java index 23570728d27c..f5ba7545dd1d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/Coordinator.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/Coordinator.java @@ -16,11 +16,12 @@ package com.android.systemui.statusbar.notification.collection.coordinator; +import static android.app.NotificationChannel.SYSTEM_RESERVED_IDS; + import androidx.annotation.NonNull; import com.android.systemui.statusbar.notification.collection.NotifPipeline; import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.Pluggable; - /** * Interface for registering callbacks to the {@link NotifPipeline}. */ diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/HeadsUpCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/HeadsUpCoordinator.kt index a40a2285d8a2..ed82c3d402ef 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/HeadsUpCoordinator.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/HeadsUpCoordinator.kt @@ -916,9 +916,13 @@ constructor( val sectioner = object : NotifSectioner("HeadsUp", BUCKET_HEADS_UP) { - override fun isInSection(entry: PipelineEntry): Boolean = + override fun isInSection(entry: PipelineEntry): Boolean { + if (BundleUtil.isClassified(entry)) { + return false + } // TODO: This check won't notice if a child of the group is going to HUN... - isGoingToShowHunNoRetract(entry) + return isGoingToShowHunNoRetract(entry) + } override fun getComparator(): NotifComparator { return object : NotifComparator("HeadsUp") { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/LockScreenMinimalismCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/LockScreenMinimalismCoordinator.kt index d542e67e665a..3a8a68522409 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/LockScreenMinimalismCoordinator.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/LockScreenMinimalismCoordinator.kt @@ -229,6 +229,7 @@ constructor( override fun isInSection(entry: PipelineEntry): Boolean { if (NotificationMinimalism.isUnexpectedlyInLegacyMode()) return false if (!minimalismEnabled) return false + if (BundleUtil.isClassified(entry)) return false return entry.anyEntry { notificationEntry -> seenNotificationsInteractor.isTopOngoingNotification(notificationEntry) } @@ -240,6 +241,7 @@ constructor( override fun isInSection(entry: PipelineEntry): Boolean { if (NotificationMinimalism.isUnexpectedlyInLegacyMode()) return false if (!minimalismEnabled) return false + if (BundleUtil.isClassified(entry)) return false return entry.anyEntry { notificationEntry -> seenNotificationsInteractor.isTopUnseenNotification(notificationEntry) } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RankingCoordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RankingCoordinator.java index cda535de86c4..661734a7ac96 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RankingCoordinator.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RankingCoordinator.java @@ -101,11 +101,10 @@ public class RankingCoordinator implements Coordinator { NotificationPriorityBucketKt.BUCKET_ALERTING) { @Override public boolean isInSection(PipelineEntry entry) { - return mHighPriorityProvider.isHighPriority(entry) - && entry.getRepresentativeEntry() != null - && entry.getRepresentativeEntry().getChannel() != null - && !SYSTEM_RESERVED_IDS.contains( - entry.getRepresentativeEntry().getChannel().getId()); + if (BundleUtil.Companion.isClassified(entry)) { + return false; + } + return mHighPriorityProvider.isHighPriority(entry); } @Nullable @@ -126,6 +125,9 @@ public class RankingCoordinator implements Coordinator { if (entry instanceof BundleEntry) { return true; } + if (BundleUtil.Companion.isClassified(entry)) { + return false; + } return !mHighPriorityProvider.isHighPriority(entry) && entry.getRepresentativeEntry() != null && !entry.getRepresentativeEntry().isAmbient(); @@ -161,6 +163,9 @@ public class RankingCoordinator implements Coordinator { NotificationPriorityBucketKt.BUCKET_SILENT) { @Override public boolean isInSection(PipelineEntry entry) { + if (BundleUtil.Companion.isClassified(entry)) { + return false; + } return !mHighPriorityProvider.isHighPriority(entry) && entry.getRepresentativeEntry() != null && entry.getRepresentativeEntry().isAmbient(); |