diff options
| author | 2023-10-28 18:04:41 +0000 | |
|---|---|---|
| committer | 2023-10-29 17:27:22 +0000 | |
| commit | 724d249a9e952e7b04c2649615344df305bfa703 (patch) | |
| tree | 151d1584c6a9caec07617e8254acf4426888bf5d | |
| parent | 9553535885234e755a346cd80a68f7b75228da4e (diff) | |
Add new DumpUtils printCollection
Bug: 308318979
Test: dumpsysui
Flag: NA
Change-Id: I98082e05808a013fbd94895539e3d9a84bbc1a0d
9 files changed, 70 insertions, 55 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt index be9a2993dab1..42bb5bb2a361 100644 --- a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt @@ -77,7 +77,7 @@ import com.android.systemui.settings.UserTracker import com.android.systemui.statusbar.policy.KeyguardStateController import com.android.systemui.util.asIndenting import com.android.systemui.util.concurrency.DelayableExecutor -import com.android.systemui.util.indentIfPossible +import com.android.systemui.util.withIncreasedIndent import com.android.wm.shell.taskview.TaskViewFactory import dagger.Lazy import java.io.PrintWriter @@ -822,9 +822,9 @@ class ControlsUiControllerImpl @Inject constructor ( private fun findSelectionItem(si: SelectedItem, items: List<SelectionItem>): SelectionItem? = items.firstOrNull { it.matches(si) } - override fun dump(pw: PrintWriter, args: Array<out String>) { - pw.println("ControlsUiControllerImpl:") - pw.asIndenting().indentIfPossible { + override fun dump(pw: PrintWriter, args: Array<out String>) = pw.asIndenting().run { + println("ControlsUiControllerImpl:") + withIncreasedIndent { println("hidden: $hidden") println("selectedItem: $selectedItem") println("lastSelections: $lastSelections") diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt index 0190d5c9759b..2cd55609a749 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt @@ -61,7 +61,9 @@ import com.android.systemui.smartspace.dagger.SmartspaceModule.Companion.WEATHER import com.android.systemui.statusbar.phone.KeyguardBypassController import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.DeviceProvisionedController +import com.android.systemui.util.asIndenting import com.android.systemui.util.concurrency.Execution +import com.android.systemui.util.printCollection import com.android.systemui.util.settings.SecureSettings import com.android.systemui.util.time.SystemClock import java.io.PrintWriter @@ -587,10 +589,9 @@ constructor( return null } - override fun dump(pw: PrintWriter, args: Array<out String>) { - pw.println("Region Samplers: ${regionSamplers.size}") - regionSamplers.map { (_, sampler) -> - sampler.dump(pw) + override fun dump(pw: PrintWriter, args: Array<out String>) = pw.asIndenting().run { + printCollection("Region Samplers", regionSamplers.values) { + it.dump(this) } } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/GutsCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/GutsCoordinator.kt index 9a93abd463c7..b200136b1b43 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/GutsCoordinator.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/GutsCoordinator.kt @@ -28,6 +28,10 @@ import com.android.systemui.statusbar.notification.collection.render.NotifGutsVi import com.android.systemui.statusbar.notification.collection.render.NotifGutsViewManager import com.android.systemui.statusbar.notification.row.NotificationGuts import com.android.systemui.statusbar.notification.row.NotificationGutsManager +import com.android.systemui.util.asIndenting +import com.android.systemui.util.printCollection +import com.android.systemui.util.println +import com.android.systemui.util.withIncreasedIndent import java.io.PrintWriter import javax.inject.Inject @@ -54,7 +58,7 @@ class GutsCoordinator @Inject constructor( private var onEndLifetimeExtensionCallback: OnEndLifetimeExtensionCallback? = null init { - dumpManager.registerDumpable(TAG, this) + dumpManager.registerDumpable(this) } override fun attach(pipeline: NotifPipeline) { @@ -62,16 +66,12 @@ class GutsCoordinator @Inject constructor( pipeline.addNotificationLifetimeExtender(mLifetimeExtender) } - override fun dump(pw: PrintWriter, args: Array<String>) { - pw.println(" notifsWithOpenGuts: ${notifsWithOpenGuts.size}") - for (key in notifsWithOpenGuts) { - pw.println(" * $key") + override fun dump(pw: PrintWriter, args: Array<String>) = pw.asIndenting().run { + withIncreasedIndent { + printCollection("notifsWithOpenGuts", notifsWithOpenGuts) + printCollection("notifsExtendingLifetime", notifsExtendingLifetime) + println("onEndLifetimeExtensionCallback", onEndLifetimeExtensionCallback) } - pw.println(" notifsExtendingLifetime: ${notifsExtendingLifetime.size}") - for (key in notifsExtendingLifetime) { - pw.println(" * $key") - } - pw.println(" onEndLifetimeExtensionCallback: $onEndLifetimeExtensionCallback") } private val mLifetimeExtender: NotifLifetimeExtender = object : NotifLifetimeExtender { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionInconsistencyTracker.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionInconsistencyTracker.kt index 8bce5b011d0c..5e5f2a12cdf3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionInconsistencyTracker.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionInconsistencyTracker.kt @@ -20,6 +20,8 @@ import android.service.notification.NotificationListenerService.RankingMap import android.util.ArrayMap import com.android.internal.annotations.VisibleForTesting import com.android.systemui.statusbar.notification.collection.NotificationEntry +import com.android.systemui.util.asIndenting +import com.android.systemui.util.printCollection import java.io.PrintWriter class NotifCollectionInconsistencyTracker(val logger: NotifCollectionLogger) { @@ -104,15 +106,9 @@ class NotifCollectionInconsistencyTracker(val logger: NotifCollectionLogger) { } } - fun dump(pw: PrintWriter) { - pw.println("notificationsWithoutRankings: ${notificationsWithoutRankings.size}") - for (key in notificationsWithoutRankings) { - pw.println("\t * : $key") - } - pw.println("missingNotifications: ${missingNotifications.size}") - for (key in missingNotifications) { - pw.println("\t * : $key") - } + fun dump(pw: PrintWriter) = pw.asIndenting().run { + printCollection("notificationsWithoutRankings", notificationsWithoutRankings) + printCollection("missingNotifications", missingNotifications) } private var attached: Boolean = false diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/SelfTrackingLifetimeExtender.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/SelfTrackingLifetimeExtender.kt index febc011043a0..7b0a28a0ef8e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/SelfTrackingLifetimeExtender.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/SelfTrackingLifetimeExtender.kt @@ -5,6 +5,10 @@ import android.util.ArrayMap import android.util.Log import com.android.systemui.Dumpable import com.android.systemui.statusbar.notification.collection.NotificationEntry +import com.android.systemui.util.asIndenting +import com.android.systemui.util.printCollection +import com.android.systemui.util.println +import com.android.systemui.util.withIncreasedIndent import java.io.PrintWriter /** @@ -104,9 +108,10 @@ abstract class SelfTrackingLifetimeExtender( mCallback = callback } - final override fun dump(pw: PrintWriter, args: Array<out String>) { - pw.println("LifetimeExtender: $name:") - pw.println(" mEntriesExtended: ${mEntriesExtended.size}") - mEntriesExtended.forEach { pw.println(" * ${it.key}") } + final override fun dump(pw: PrintWriter, args: Array<out String>) = pw.asIndenting().run { + println("LifetimeExtender", name) + withIncreasedIndent { + printCollection("mEntriesExtended", mEntriesExtended.keys) + } } }
\ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/DebugModeFilterProvider.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/DebugModeFilterProvider.kt index c873e6ad36d4..58712bf8e304 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/DebugModeFilterProvider.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/DebugModeFilterProvider.kt @@ -26,6 +26,9 @@ import com.android.systemui.statusbar.commandline.CommandRegistry import com.android.systemui.statusbar.notification.collection.NotificationEntry import com.android.systemui.util.Assert import com.android.systemui.util.ListenerSet +import com.android.systemui.util.asIndenting +import com.android.systemui.util.printCollection +import com.android.systemui.util.println import java.io.PrintWriter import javax.inject.Inject @@ -86,12 +89,9 @@ class DebugModeFilterProvider @Inject constructor( return entry.sbn.packageName !in allowedPackages } - override fun dump(pw: PrintWriter, args: Array<out String>) { - pw.println("initialized: ${listeners.isNotEmpty()}") - pw.println("allowedPackages: ${allowedPackages.size}") - allowedPackages.forEachIndexed { i, pkg -> - pw.println(" [$i]: $pkg") - } + override fun dump(pw: PrintWriter, args: Array<out String>) = pw.asIndenting().run { + println("initialized", listeners.isNotEmpty()) + printCollection("allowedPackages", allowedPackages) } companion object { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/NotificationDismissibilityProviderImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/NotificationDismissibilityProviderImpl.kt index 78e9a740a547..9326d3385d65 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/NotificationDismissibilityProviderImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/NotificationDismissibilityProviderImpl.kt @@ -22,7 +22,7 @@ import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dump.DumpManager import com.android.systemui.statusbar.notification.collection.NotificationEntry import com.android.systemui.util.asIndenting -import com.android.systemui.util.withIncreasedIndent +import com.android.systemui.util.printCollection import java.io.PrintWriter import javax.inject.Inject @@ -49,11 +49,7 @@ class NotificationDismissibilityProviderImpl @Inject constructor(dumpManager: Du } override fun dump(pw: PrintWriter, args: Array<out String>) = - pw.asIndenting().run { - println("non-dismissible entries: ${nonDismissableEntryKeys.size}") - - withIncreasedIndent { nonDismissableEntryKeys.forEach(this::println) } - } + pw.asIndenting().run { printCollection("non-dismissible entries", nonDismissableEntryKeys) } companion object { private const val TAG = "NotificationDismissibilityProvider" diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProvider.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProvider.kt index db7f46eb28f2..aca8b64c05d2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProvider.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProvider.kt @@ -26,6 +26,7 @@ import com.android.systemui.statusbar.notification.collection.provider.HighPrior import com.android.systemui.statusbar.policy.KeyguardStateController import com.android.systemui.util.ListenerSet import com.android.systemui.util.asIndenting +import com.android.systemui.util.println import com.android.systemui.util.settings.GlobalSettings import com.android.systemui.util.settings.SecureSettings import com.android.systemui.util.withIncreasedIndent @@ -229,13 +230,13 @@ class KeyguardNotificationVisibilityProviderImpl @Inject constructor( } override fun dump(pw: PrintWriter, args: Array<out String>) = pw.asIndenting().run { - println("isLockedOrLocking=$isLockedOrLocking") + println("isLockedOrLocking", isLockedOrLocking) withIncreasedIndent { - println("keyguardStateController.isShowing=${keyguardStateController.isShowing}") - println("statusBarStateController.currentOrUpcomingState=" + - "${statusBarStateController.currentOrUpcomingState}") + println("keyguardStateController.isShowing", keyguardStateController.isShowing) + println("statusBarStateController.currentOrUpcomingState", + statusBarStateController.currentOrUpcomingState) } - println("hideSilentNotificationsOnLockscreen=$hideSilentNotificationsOnLockscreen") + println("hideSilentNotificationsOnLockscreen", hideSilentNotificationsOnLockscreen) } private val isLockedOrLocking get() = diff --git a/packages/SystemUI/src/com/android/systemui/util/DumpUtils.kt b/packages/SystemUI/src/com/android/systemui/util/DumpUtils.kt index 018ef968ff2d..5b0943a77979 100644 --- a/packages/SystemUI/src/com/android/systemui/util/DumpUtils.kt +++ b/packages/SystemUI/src/com/android/systemui/util/DumpUtils.kt @@ -18,6 +18,7 @@ package com.android.systemui.util import android.util.IndentingPrintWriter import android.view.View +import com.android.systemui.Dumpable import java.io.PrintWriter /** @@ -56,13 +57,28 @@ fun IndentingPrintWriter.withIncreasedIndent(runnable: Runnable) { } /** Print a line which is '$label=$value' */ -fun IndentingPrintWriter.println(label: String, value: Any) = +fun IndentingPrintWriter.println(label: String, value: Any?) = append(label).append('=').println(value) -/** Return a readable string for the visibility */ -fun visibilityString(@View.Visibility visibility: Int): String = when (visibility) { - View.GONE -> "gone" - View.VISIBLE -> "visible" - View.INVISIBLE -> "invisible" - else -> "unknown:$visibility" +@JvmOverloads +inline fun <T> IndentingPrintWriter.printCollection( + label: String, + collection: Collection<T>, + printer: IndentingPrintWriter.(T) -> Unit = IndentingPrintWriter::println, +) { + append(label).append(": ").println(collection.size) + withIncreasedIndent { collection.forEach { printer(it) } } +} + +fun <T : Dumpable> IndentingPrintWriter.dumpCollection(label: String, collection: Collection<T>) { + printCollection(label, collection) { it.dump(this, emptyArray()) } } + +/** Return a readable string for the visibility */ +fun visibilityString(@View.Visibility visibility: Int): String = + when (visibility) { + View.GONE -> "gone" + View.VISIBLE -> "visible" + View.INVISIBLE -> "invisible" + else -> "unknown:$visibility" + } |