[Chipbar] Add a #dump method.
Bug: 258019006 Test: `adb shell dumpsys activity service com.android.systemui/.SystemUIService ChipbarCoordinator` -> dumps current chipbar views Test: `adb shell dumpsys activity service com.android.systemui/.SystemUIService MediaTttChipControllerReceiver` -> dumps current ttt receiver views Change-Id: I4a63778f9497e5dcb88402ecfb673c4c753fd1a9
This commit is contained in:
@@ -51,6 +51,11 @@ open class DumpManager @Inject constructor() {
|
||||
registerDumpable(name, module, DumpPriority.CRITICAL)
|
||||
}
|
||||
|
||||
/** See [registerNormalDumpable]. */
|
||||
fun registerNormalDumpable(module: Dumpable) {
|
||||
registerNormalDumpable(module::class.java.simpleName, module)
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a dumpable to be called during the NORMAL section of the bug report.
|
||||
*
|
||||
|
||||
@@ -37,6 +37,7 @@ import com.android.systemui.common.shared.model.ContentDescription
|
||||
import com.android.systemui.common.ui.binder.TintedIconViewBinder
|
||||
import com.android.systemui.dagger.SysUISingleton
|
||||
import com.android.systemui.dagger.qualifiers.Main
|
||||
import com.android.systemui.dump.DumpManager
|
||||
import com.android.systemui.media.taptotransfer.MediaTttFlags
|
||||
import com.android.systemui.media.taptotransfer.common.MediaTttIcon
|
||||
import com.android.systemui.media.taptotransfer.common.MediaTttLogger
|
||||
@@ -69,6 +70,7 @@ open class MediaTttChipControllerReceiver @Inject constructor(
|
||||
mainExecutor: DelayableExecutor,
|
||||
accessibilityManager: AccessibilityManager,
|
||||
configurationController: ConfigurationController,
|
||||
dumpManager: DumpManager,
|
||||
powerManager: PowerManager,
|
||||
@Main private val mainHandler: Handler,
|
||||
private val mediaTttFlags: MediaTttFlags,
|
||||
@@ -83,6 +85,7 @@ open class MediaTttChipControllerReceiver @Inject constructor(
|
||||
mainExecutor,
|
||||
accessibilityManager,
|
||||
configurationController,
|
||||
dumpManager,
|
||||
powerManager,
|
||||
R.layout.media_ttt_chip_receiver,
|
||||
wakeLockBuilder,
|
||||
@@ -162,6 +165,7 @@ open class MediaTttChipControllerReceiver @Inject constructor(
|
||||
}
|
||||
|
||||
override fun start() {
|
||||
super.start()
|
||||
if (mediaTttFlags.isMediaTttEnabled()) {
|
||||
commandQueue.addCallback(commandQueueCallbacks)
|
||||
}
|
||||
|
||||
@@ -30,12 +30,16 @@ import android.view.accessibility.AccessibilityManager
|
||||
import android.view.accessibility.AccessibilityManager.FLAG_CONTENT_CONTROLS
|
||||
import android.view.accessibility.AccessibilityManager.FLAG_CONTENT_ICONS
|
||||
import android.view.accessibility.AccessibilityManager.FLAG_CONTENT_TEXT
|
||||
import androidx.annotation.CallSuper
|
||||
import com.android.systemui.CoreStartable
|
||||
import com.android.systemui.Dumpable
|
||||
import com.android.systemui.dagger.qualifiers.Main
|
||||
import com.android.systemui.dump.DumpManager
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController
|
||||
import com.android.systemui.util.concurrency.DelayableExecutor
|
||||
import com.android.systemui.util.time.SystemClock
|
||||
import com.android.systemui.util.wakelock.WakeLock
|
||||
import java.io.PrintWriter
|
||||
|
||||
/**
|
||||
* A generic controller that can temporarily display a new view in a new window.
|
||||
@@ -69,11 +73,12 @@ abstract class TemporaryViewDisplayController<T : TemporaryViewInfo, U : Tempora
|
||||
@Main private val mainExecutor: DelayableExecutor,
|
||||
private val accessibilityManager: AccessibilityManager,
|
||||
private val configurationController: ConfigurationController,
|
||||
private val dumpManager: DumpManager,
|
||||
private val powerManager: PowerManager,
|
||||
@LayoutRes private val viewLayoutRes: Int,
|
||||
private val wakeLockBuilder: WakeLock.Builder,
|
||||
private val systemClock: SystemClock,
|
||||
) : CoreStartable {
|
||||
) : CoreStartable, Dumpable {
|
||||
/**
|
||||
* Window layout params that will be used as a starting point for the [windowLayoutParams] of
|
||||
* all subclasses.
|
||||
@@ -109,6 +114,11 @@ abstract class TemporaryViewDisplayController<T : TemporaryViewInfo, U : Tempora
|
||||
return activeViews.getOrNull(0)
|
||||
}
|
||||
|
||||
@CallSuper
|
||||
override fun start() {
|
||||
dumpManager.registerNormalDumpable(this)
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays the view with the provided [newInfo].
|
||||
*
|
||||
@@ -382,6 +392,19 @@ abstract class TemporaryViewDisplayController<T : TemporaryViewInfo, U : Tempora
|
||||
}
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
@CallSuper
|
||||
override fun dump(pw: PrintWriter, args: Array<out String>) {
|
||||
pw.println("Current time millis: ${systemClock.currentTimeMillis()}")
|
||||
pw.println("Active views size: ${activeViews.size}")
|
||||
activeViews.forEachIndexed { index, displayInfo ->
|
||||
pw.println("View[$index]:")
|
||||
pw.println(" info=${displayInfo.info}")
|
||||
pw.println(" hasView=${displayInfo.view != null}")
|
||||
pw.println(" timeExpiration=${displayInfo.timeExpirationMillis}")
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A method implemented by subclasses to update [currentView] based on [newInfo].
|
||||
*/
|
||||
@@ -445,8 +468,6 @@ abstract class TemporaryViewDisplayController<T : TemporaryViewInfo, U : Tempora
|
||||
*/
|
||||
var cancelViewTimeout: Runnable?,
|
||||
)
|
||||
|
||||
// TODO(b/258019006): Add a dump method that dumps the currently active views.
|
||||
}
|
||||
|
||||
private const val REMOVAL_REASON_TIMEOUT = "TIMEOUT"
|
||||
|
||||
@@ -41,6 +41,7 @@ import com.android.systemui.common.ui.binder.TextViewBinder
|
||||
import com.android.systemui.common.ui.binder.TintedIconViewBinder
|
||||
import com.android.systemui.dagger.SysUISingleton
|
||||
import com.android.systemui.dagger.qualifiers.Main
|
||||
import com.android.systemui.dump.DumpManager
|
||||
import com.android.systemui.plugins.FalsingManager
|
||||
import com.android.systemui.statusbar.VibratorHelper
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController
|
||||
@@ -75,6 +76,7 @@ open class ChipbarCoordinator @Inject constructor(
|
||||
@Main mainExecutor: DelayableExecutor,
|
||||
accessibilityManager: AccessibilityManager,
|
||||
configurationController: ConfigurationController,
|
||||
dumpManager: DumpManager,
|
||||
powerManager: PowerManager,
|
||||
private val falsingManager: FalsingManager,
|
||||
private val falsingCollector: FalsingCollector,
|
||||
@@ -89,6 +91,7 @@ open class ChipbarCoordinator @Inject constructor(
|
||||
mainExecutor,
|
||||
accessibilityManager,
|
||||
configurationController,
|
||||
dumpManager,
|
||||
powerManager,
|
||||
R.layout.chipbar,
|
||||
wakeLockBuilder,
|
||||
@@ -225,8 +228,6 @@ open class ChipbarCoordinator @Inject constructor(
|
||||
return requireViewById(R.id.chipbar_inner)
|
||||
}
|
||||
|
||||
override fun start() {}
|
||||
|
||||
override fun getTouchableRegion(view: View, outRect: Rect) {
|
||||
viewUtil.setRectToViewWindowLocation(view, outRect)
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ import android.os.PowerManager
|
||||
import android.view.ViewGroup
|
||||
import android.view.WindowManager
|
||||
import android.view.accessibility.AccessibilityManager
|
||||
import com.android.systemui.dump.DumpManager
|
||||
import com.android.systemui.media.taptotransfer.MediaTttFlags
|
||||
import com.android.systemui.media.taptotransfer.common.MediaTttLogger
|
||||
import com.android.systemui.statusbar.CommandQueue
|
||||
@@ -39,6 +40,7 @@ class FakeMediaTttChipControllerReceiver(
|
||||
mainExecutor: DelayableExecutor,
|
||||
accessibilityManager: AccessibilityManager,
|
||||
configurationController: ConfigurationController,
|
||||
dumpManager: DumpManager,
|
||||
powerManager: PowerManager,
|
||||
mainHandler: Handler,
|
||||
mediaTttFlags: MediaTttFlags,
|
||||
@@ -55,6 +57,7 @@ class FakeMediaTttChipControllerReceiver(
|
||||
mainExecutor,
|
||||
accessibilityManager,
|
||||
configurationController,
|
||||
dumpManager,
|
||||
powerManager,
|
||||
mainHandler,
|
||||
mediaTttFlags,
|
||||
|
||||
@@ -34,6 +34,7 @@ import androidx.test.filters.SmallTest
|
||||
import com.android.internal.logging.testing.UiEventLoggerFake
|
||||
import com.android.systemui.R
|
||||
import com.android.systemui.SysuiTestCase
|
||||
import com.android.systemui.dump.DumpManager
|
||||
import com.android.systemui.media.taptotransfer.MediaTttFlags
|
||||
import com.android.systemui.media.taptotransfer.common.MediaTttLogger
|
||||
import com.android.systemui.statusbar.CommandQueue
|
||||
@@ -73,6 +74,8 @@ class MediaTttChipControllerReceiverTest : SysuiTestCase() {
|
||||
@Mock
|
||||
private lateinit var configurationController: ConfigurationController
|
||||
@Mock
|
||||
private lateinit var dumpManager: DumpManager
|
||||
@Mock
|
||||
private lateinit var mediaTttFlags: MediaTttFlags
|
||||
@Mock
|
||||
private lateinit var powerManager: PowerManager
|
||||
@@ -122,6 +125,7 @@ class MediaTttChipControllerReceiverTest : SysuiTestCase() {
|
||||
fakeExecutor,
|
||||
accessibilityManager,
|
||||
configurationController,
|
||||
dumpManager,
|
||||
powerManager,
|
||||
Handler.getMain(),
|
||||
mediaTttFlags,
|
||||
@@ -150,6 +154,7 @@ class MediaTttChipControllerReceiverTest : SysuiTestCase() {
|
||||
FakeExecutor(FakeSystemClock()),
|
||||
accessibilityManager,
|
||||
configurationController,
|
||||
dumpManager,
|
||||
powerManager,
|
||||
Handler.getMain(),
|
||||
mediaTttFlags,
|
||||
|
||||
@@ -38,6 +38,7 @@ import com.android.systemui.R
|
||||
import com.android.systemui.SysuiTestCase
|
||||
import com.android.systemui.classifier.FalsingCollector
|
||||
import com.android.systemui.common.shared.model.Text.Companion.loadText
|
||||
import com.android.systemui.dump.DumpManager
|
||||
import com.android.systemui.media.taptotransfer.MediaTttFlags
|
||||
import com.android.systemui.media.taptotransfer.common.MediaTttLogger
|
||||
import com.android.systemui.plugins.FalsingManager
|
||||
@@ -81,6 +82,7 @@ class MediaTttSenderCoordinatorTest : SysuiTestCase() {
|
||||
@Mock private lateinit var applicationInfo: ApplicationInfo
|
||||
@Mock private lateinit var commandQueue: CommandQueue
|
||||
@Mock private lateinit var configurationController: ConfigurationController
|
||||
@Mock private lateinit var dumpManager: DumpManager
|
||||
@Mock private lateinit var falsingManager: FalsingManager
|
||||
@Mock private lateinit var falsingCollector: FalsingCollector
|
||||
@Mock private lateinit var chipbarLogger: ChipbarLogger
|
||||
@@ -137,6 +139,7 @@ class MediaTttSenderCoordinatorTest : SysuiTestCase() {
|
||||
fakeExecutor,
|
||||
accessibilityManager,
|
||||
configurationController,
|
||||
dumpManager,
|
||||
powerManager,
|
||||
falsingManager,
|
||||
falsingCollector,
|
||||
|
||||
@@ -27,6 +27,7 @@ import androidx.test.filters.SmallTest
|
||||
import com.android.systemui.R
|
||||
import com.android.systemui.SysuiTestCase
|
||||
import com.android.systemui.dagger.qualifiers.Main
|
||||
import com.android.systemui.dump.DumpManager
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener
|
||||
import com.android.systemui.util.concurrency.DelayableExecutor
|
||||
@@ -66,6 +67,8 @@ class TemporaryViewDisplayControllerTest : SysuiTestCase() {
|
||||
@Mock
|
||||
private lateinit var configurationController: ConfigurationController
|
||||
@Mock
|
||||
private lateinit var dumpManager: DumpManager
|
||||
@Mock
|
||||
private lateinit var windowManager: WindowManager
|
||||
@Mock
|
||||
private lateinit var powerManager: PowerManager
|
||||
@@ -91,6 +94,7 @@ class TemporaryViewDisplayControllerTest : SysuiTestCase() {
|
||||
fakeExecutor,
|
||||
accessibilityManager,
|
||||
configurationController,
|
||||
dumpManager,
|
||||
powerManager,
|
||||
fakeWakeLockBuilder,
|
||||
fakeClock,
|
||||
@@ -989,6 +993,7 @@ class TemporaryViewDisplayControllerTest : SysuiTestCase() {
|
||||
@Main mainExecutor: DelayableExecutor,
|
||||
accessibilityManager: AccessibilityManager,
|
||||
configurationController: ConfigurationController,
|
||||
dumpManager: DumpManager,
|
||||
powerManager: PowerManager,
|
||||
wakeLockBuilder: WakeLock.Builder,
|
||||
systemClock: SystemClock,
|
||||
@@ -999,6 +1004,7 @@ class TemporaryViewDisplayControllerTest : SysuiTestCase() {
|
||||
mainExecutor,
|
||||
accessibilityManager,
|
||||
configurationController,
|
||||
dumpManager,
|
||||
powerManager,
|
||||
R.layout.chipbar,
|
||||
wakeLockBuilder,
|
||||
|
||||
@@ -36,6 +36,7 @@ import com.android.systemui.common.shared.model.ContentDescription.Companion.loa
|
||||
import com.android.systemui.common.shared.model.Icon
|
||||
import com.android.systemui.common.shared.model.Text
|
||||
import com.android.systemui.common.shared.model.TintedIcon
|
||||
import com.android.systemui.dump.DumpManager
|
||||
import com.android.systemui.plugins.FalsingManager
|
||||
import com.android.systemui.statusbar.VibratorHelper
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController
|
||||
@@ -66,6 +67,7 @@ class ChipbarCoordinatorTest : SysuiTestCase() {
|
||||
@Mock private lateinit var logger: ChipbarLogger
|
||||
@Mock private lateinit var accessibilityManager: AccessibilityManager
|
||||
@Mock private lateinit var configurationController: ConfigurationController
|
||||
@Mock private lateinit var dumpManager: DumpManager
|
||||
@Mock private lateinit var powerManager: PowerManager
|
||||
@Mock private lateinit var windowManager: WindowManager
|
||||
@Mock private lateinit var falsingManager: FalsingManager
|
||||
@@ -100,6 +102,7 @@ class ChipbarCoordinatorTest : SysuiTestCase() {
|
||||
fakeExecutor,
|
||||
accessibilityManager,
|
||||
configurationController,
|
||||
dumpManager,
|
||||
powerManager,
|
||||
falsingManager,
|
||||
falsingCollector,
|
||||
|
||||
@@ -22,6 +22,7 @@ import android.view.ViewGroup
|
||||
import android.view.WindowManager
|
||||
import android.view.accessibility.AccessibilityManager
|
||||
import com.android.systemui.classifier.FalsingCollector
|
||||
import com.android.systemui.dump.DumpManager
|
||||
import com.android.systemui.plugins.FalsingManager
|
||||
import com.android.systemui.statusbar.VibratorHelper
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController
|
||||
@@ -38,6 +39,7 @@ class FakeChipbarCoordinator(
|
||||
mainExecutor: DelayableExecutor,
|
||||
accessibilityManager: AccessibilityManager,
|
||||
configurationController: ConfigurationController,
|
||||
dumpManager: DumpManager,
|
||||
powerManager: PowerManager,
|
||||
falsingManager: FalsingManager,
|
||||
falsingCollector: FalsingCollector,
|
||||
@@ -53,6 +55,7 @@ class FakeChipbarCoordinator(
|
||||
mainExecutor,
|
||||
accessibilityManager,
|
||||
configurationController,
|
||||
dumpManager,
|
||||
powerManager,
|
||||
falsingManager,
|
||||
falsingCollector,
|
||||
|
||||
Reference in New Issue
Block a user