summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jeff DeCew <jeffdq@google.com> 2023-10-28 18:04:41 +0000
committer Jeff DeCew <jeffdq@google.com> 2023-10-29 17:27:22 +0000
commit724d249a9e952e7b04c2649615344df305bfa703 (patch)
tree151d1584c6a9caec07617e8254acf4426888bf5d
parent9553535885234e755a346cd80a68f7b75228da4e (diff)
Add new DumpUtils printCollection
Bug: 308318979 Test: dumpsysui Flag: NA Change-Id: I98082e05808a013fbd94895539e3d9a84bbc1a0d
-rw-r--r--packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt8
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/GutsCoordinator.kt20
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionInconsistencyTracker.kt14
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/SelfTrackingLifetimeExtender.kt13
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/DebugModeFilterProvider.kt12
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/NotificationDismissibilityProviderImpl.kt8
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProvider.kt11
-rw-r--r--packages/SystemUI/src/com/android/systemui/util/DumpUtils.kt30
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"
+ }