Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/PipelineEntry.kt +21 −0 Original line number Diff line number Diff line Loading @@ -86,3 +86,24 @@ sealed class PipelineEntry( fun onSensitivityChanged(entry: NotificationEntry) } } /** Performs an action on all group entries, even if they are in a bundle */ inline fun List<PipelineEntry>.forEachGroupEntry(action: (GroupEntry) -> Unit) { forEach { entry -> when (entry) { is GroupEntry -> { action(entry) } is BundleEntry -> { for (bundleChild in entry.children) { if (bundleChild is GroupEntry) { action(bundleChild) } } } else -> { // Do nothing for leaf nodes } } } } packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/GroupCountCoordinator.kt +6 −14 Original line number Diff line number Diff line Loading @@ -17,11 +17,11 @@ package com.android.systemui.statusbar.notification.collection.coordinator import android.util.ArrayMap import com.android.systemui.statusbar.notification.collection.BundleEntry import com.android.systemui.statusbar.notification.collection.GroupEntry import com.android.systemui.statusbar.notification.collection.PipelineEntry import com.android.systemui.statusbar.notification.collection.NotifPipeline import com.android.systemui.statusbar.notification.collection.PipelineEntry import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope import com.android.systemui.statusbar.notification.collection.forEachGroupEntry import com.android.systemui.statusbar.notification.collection.render.NotifGroupController import javax.inject.Inject Loading @@ -38,15 +38,7 @@ class GroupCountCoordinator @Inject constructor() : Coordinator { private fun onBeforeFinalizeFilter(entries: List<PipelineEntry>) { // save untruncated child counts to our internal map untruncatedChildCounts.clear() entries.asSequence() .flatMap { entry -> when (entry) { is GroupEntry -> listOf(entry) is BundleEntry -> entry.children.filterIsInstance<GroupEntry>() else -> emptyList() } } .forEach { groupEntry -> entries.forEachGroupEntry { groupEntry -> untruncatedChildCounts[groupEntry] = groupEntry.children.size } } Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/GroupWhenCoordinator.kt +5 −4 Original line number Diff line number Diff line Loading @@ -18,9 +18,10 @@ package com.android.systemui.statusbar.notification.collection.coordinator import android.util.ArrayMap import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.statusbar.notification.collection.GroupEntry import com.android.systemui.statusbar.notification.collection.PipelineEntry import com.android.systemui.statusbar.notification.collection.NotifPipeline import com.android.systemui.statusbar.notification.collection.PipelineEntry import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope import com.android.systemui.statusbar.notification.collection.forEachGroupEntry import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.Invalidator import com.android.systemui.statusbar.notification.collection.render.NotifGroupController import com.android.systemui.util.concurrency.DelayableExecutor Loading @@ -35,7 +36,7 @@ class GroupWhenCoordinator @Inject constructor( @Main private val delayableExecutor: DelayableExecutor, private val systemClock: SystemClock private val systemClock: SystemClock, ) : Coordinator { private val invalidator = object : Invalidator("GroupWhenCoordinator") {} Loading @@ -58,7 +59,7 @@ constructor( val now = systemClock.currentTimeMillis() var closestFutureTime = Long.MAX_VALUE entries.asSequence().filterIsInstance<GroupEntry>().forEach { groupEntry -> entries.forEachGroupEntry { groupEntry -> val whenMillis = calculateGroupNotificationTime(groupEntry, now) notificationGroupTimes[groupEntry] = whenMillis if (whenMillis > now) { Loading @@ -83,7 +84,7 @@ constructor( private fun calculateGroupNotificationTime( groupEntry: GroupEntry, currentTimeMillis: Long currentTimeMillis: Long, ): Long { var pastTime = Long.MIN_VALUE var futureTime = Long.MAX_VALUE Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RowAlertTimeCoordinator.kt +3 −2 Original line number Diff line number Diff line Loading @@ -17,10 +17,11 @@ package com.android.systemui.statusbar.notification.collection.coordinator import android.util.ArrayMap import com.android.systemui.statusbar.notification.collection.GroupEntry import com.android.systemui.statusbar.notification.collection.PipelineEntry import com.android.systemui.statusbar.notification.collection.NotifPipeline import com.android.systemui.statusbar.notification.collection.NotificationEntry import com.android.systemui.statusbar.notification.collection.PipelineEntry import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope import com.android.systemui.statusbar.notification.collection.forEachGroupEntry import com.android.systemui.statusbar.notification.collection.render.NotifRowController import javax.inject.Inject import kotlin.math.max Loading @@ -41,7 +42,7 @@ class RowAlertTimeCoordinator @Inject constructor() : Coordinator { private fun onBeforeFinalizeFilterListener(entries: List<PipelineEntry>) { latestAlertTimeBySummary.clear() entries.asSequence().filterIsInstance<GroupEntry>().forEach { groupEntry -> entries.forEachGroupEntry { groupEntry -> val summary = checkNotNull(groupEntry.summary) latestAlertTimeBySummary[summary] = groupEntry.calculateLatestAlertTime() } Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/RenderStageManager.kt +2 −26 Original line number Diff line number Diff line Loading @@ -20,11 +20,12 @@ import com.android.app.tracing.traceSection import com.android.systemui.dagger.SysUISingleton import com.android.systemui.statusbar.notification.collection.BundleEntry import com.android.systemui.statusbar.notification.collection.GroupEntry import com.android.systemui.statusbar.notification.collection.PipelineEntry import com.android.systemui.statusbar.notification.collection.NotificationEntry import com.android.systemui.statusbar.notification.collection.PipelineDumpable import com.android.systemui.statusbar.notification.collection.PipelineDumper import com.android.systemui.statusbar.notification.collection.PipelineEntry import com.android.systemui.statusbar.notification.collection.ShadeListBuilder import com.android.systemui.statusbar.notification.collection.forEachGroupEntry import com.android.systemui.statusbar.notification.collection.listbuilder.OnAfterRenderEntryListener import com.android.systemui.statusbar.notification.collection.listbuilder.OnAfterRenderGroupListener import com.android.systemui.statusbar.notification.collection.listbuilder.OnAfterRenderListListener Loading Loading @@ -154,29 +155,4 @@ class RenderStageManager @Inject constructor() : PipelineDumpable { } } } /** * Performs an action on all group entries, even if they are in a bundle */ private inline fun List<PipelineEntry>.forEachGroupEntry( action: (GroupEntry) -> Unit ) { forEach { entry -> when (entry) { is GroupEntry -> { action(entry) } is BundleEntry -> { for (bundleChild in entry.children) { if (bundleChild is GroupEntry) { action(bundleChild) } } } else -> { // Do nothing for leaf nodes } } } } } Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/PipelineEntry.kt +21 −0 Original line number Diff line number Diff line Loading @@ -86,3 +86,24 @@ sealed class PipelineEntry( fun onSensitivityChanged(entry: NotificationEntry) } } /** Performs an action on all group entries, even if they are in a bundle */ inline fun List<PipelineEntry>.forEachGroupEntry(action: (GroupEntry) -> Unit) { forEach { entry -> when (entry) { is GroupEntry -> { action(entry) } is BundleEntry -> { for (bundleChild in entry.children) { if (bundleChild is GroupEntry) { action(bundleChild) } } } else -> { // Do nothing for leaf nodes } } } }
packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/GroupCountCoordinator.kt +6 −14 Original line number Diff line number Diff line Loading @@ -17,11 +17,11 @@ package com.android.systemui.statusbar.notification.collection.coordinator import android.util.ArrayMap import com.android.systemui.statusbar.notification.collection.BundleEntry import com.android.systemui.statusbar.notification.collection.GroupEntry import com.android.systemui.statusbar.notification.collection.PipelineEntry import com.android.systemui.statusbar.notification.collection.NotifPipeline import com.android.systemui.statusbar.notification.collection.PipelineEntry import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope import com.android.systemui.statusbar.notification.collection.forEachGroupEntry import com.android.systemui.statusbar.notification.collection.render.NotifGroupController import javax.inject.Inject Loading @@ -38,15 +38,7 @@ class GroupCountCoordinator @Inject constructor() : Coordinator { private fun onBeforeFinalizeFilter(entries: List<PipelineEntry>) { // save untruncated child counts to our internal map untruncatedChildCounts.clear() entries.asSequence() .flatMap { entry -> when (entry) { is GroupEntry -> listOf(entry) is BundleEntry -> entry.children.filterIsInstance<GroupEntry>() else -> emptyList() } } .forEach { groupEntry -> entries.forEachGroupEntry { groupEntry -> untruncatedChildCounts[groupEntry] = groupEntry.children.size } } Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/GroupWhenCoordinator.kt +5 −4 Original line number Diff line number Diff line Loading @@ -18,9 +18,10 @@ package com.android.systemui.statusbar.notification.collection.coordinator import android.util.ArrayMap import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.statusbar.notification.collection.GroupEntry import com.android.systemui.statusbar.notification.collection.PipelineEntry import com.android.systemui.statusbar.notification.collection.NotifPipeline import com.android.systemui.statusbar.notification.collection.PipelineEntry import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope import com.android.systemui.statusbar.notification.collection.forEachGroupEntry import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.Invalidator import com.android.systemui.statusbar.notification.collection.render.NotifGroupController import com.android.systemui.util.concurrency.DelayableExecutor Loading @@ -35,7 +36,7 @@ class GroupWhenCoordinator @Inject constructor( @Main private val delayableExecutor: DelayableExecutor, private val systemClock: SystemClock private val systemClock: SystemClock, ) : Coordinator { private val invalidator = object : Invalidator("GroupWhenCoordinator") {} Loading @@ -58,7 +59,7 @@ constructor( val now = systemClock.currentTimeMillis() var closestFutureTime = Long.MAX_VALUE entries.asSequence().filterIsInstance<GroupEntry>().forEach { groupEntry -> entries.forEachGroupEntry { groupEntry -> val whenMillis = calculateGroupNotificationTime(groupEntry, now) notificationGroupTimes[groupEntry] = whenMillis if (whenMillis > now) { Loading @@ -83,7 +84,7 @@ constructor( private fun calculateGroupNotificationTime( groupEntry: GroupEntry, currentTimeMillis: Long currentTimeMillis: Long, ): Long { var pastTime = Long.MIN_VALUE var futureTime = Long.MAX_VALUE Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RowAlertTimeCoordinator.kt +3 −2 Original line number Diff line number Diff line Loading @@ -17,10 +17,11 @@ package com.android.systemui.statusbar.notification.collection.coordinator import android.util.ArrayMap import com.android.systemui.statusbar.notification.collection.GroupEntry import com.android.systemui.statusbar.notification.collection.PipelineEntry import com.android.systemui.statusbar.notification.collection.NotifPipeline import com.android.systemui.statusbar.notification.collection.NotificationEntry import com.android.systemui.statusbar.notification.collection.PipelineEntry import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope import com.android.systemui.statusbar.notification.collection.forEachGroupEntry import com.android.systemui.statusbar.notification.collection.render.NotifRowController import javax.inject.Inject import kotlin.math.max Loading @@ -41,7 +42,7 @@ class RowAlertTimeCoordinator @Inject constructor() : Coordinator { private fun onBeforeFinalizeFilterListener(entries: List<PipelineEntry>) { latestAlertTimeBySummary.clear() entries.asSequence().filterIsInstance<GroupEntry>().forEach { groupEntry -> entries.forEachGroupEntry { groupEntry -> val summary = checkNotNull(groupEntry.summary) latestAlertTimeBySummary[summary] = groupEntry.calculateLatestAlertTime() } Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/RenderStageManager.kt +2 −26 Original line number Diff line number Diff line Loading @@ -20,11 +20,12 @@ import com.android.app.tracing.traceSection import com.android.systemui.dagger.SysUISingleton import com.android.systemui.statusbar.notification.collection.BundleEntry import com.android.systemui.statusbar.notification.collection.GroupEntry import com.android.systemui.statusbar.notification.collection.PipelineEntry import com.android.systemui.statusbar.notification.collection.NotificationEntry import com.android.systemui.statusbar.notification.collection.PipelineDumpable import com.android.systemui.statusbar.notification.collection.PipelineDumper import com.android.systemui.statusbar.notification.collection.PipelineEntry import com.android.systemui.statusbar.notification.collection.ShadeListBuilder import com.android.systemui.statusbar.notification.collection.forEachGroupEntry import com.android.systemui.statusbar.notification.collection.listbuilder.OnAfterRenderEntryListener import com.android.systemui.statusbar.notification.collection.listbuilder.OnAfterRenderGroupListener import com.android.systemui.statusbar.notification.collection.listbuilder.OnAfterRenderListListener Loading Loading @@ -154,29 +155,4 @@ class RenderStageManager @Inject constructor() : PipelineDumpable { } } } /** * Performs an action on all group entries, even if they are in a bundle */ private inline fun List<PipelineEntry>.forEachGroupEntry( action: (GroupEntry) -> Unit ) { forEach { entry -> when (entry) { is GroupEntry -> { action(entry) } is BundleEntry -> { for (bundleChild in entry.children) { if (bundleChild is GroupEntry) { action(bundleChild) } } } else -> { // Do nothing for leaf nodes } } } } }