From 9f18c47e550a8fe56e392d2d5e08d0a6f1f8b856 Mon Sep 17 00:00:00 2001 From: Caitlin Shkuratov Date: Mon, 19 Dec 2022 18:23:17 +0000 Subject: [PATCH] [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 --- .../com/android/systemui/dump/DumpManager.kt | 5 ++++ .../MediaTttChipControllerReceiver.kt | 4 +++ .../TemporaryViewDisplayController.kt | 27 ++++++++++++++++--- .../chipbar/ChipbarCoordinator.kt | 5 ++-- .../FakeMediaTttChipControllerReceiver.kt | 3 +++ .../MediaTttChipControllerReceiverTest.kt | 5 ++++ .../sender/MediaTttSenderCoordinatorTest.kt | 3 +++ .../TemporaryViewDisplayControllerTest.kt | 6 +++++ .../chipbar/ChipbarCoordinatorTest.kt | 3 +++ .../chipbar/FakeChipbarCoordinator.kt | 3 +++ 10 files changed, 59 insertions(+), 5 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/dump/DumpManager.kt b/packages/SystemUI/src/com/android/systemui/dump/DumpManager.kt index c982131be127e..276a290e22cab 100644 --- a/packages/SystemUI/src/com/android/systemui/dump/DumpManager.kt +++ b/packages/SystemUI/src/com/android/systemui/dump/DumpManager.kt @@ -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. * diff --git a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/MediaTttChipControllerReceiver.kt b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/MediaTttChipControllerReceiver.kt index 9ca5fad35ca94..ae1cf0304a027 100644 --- a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/MediaTttChipControllerReceiver.kt +++ b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/MediaTttChipControllerReceiver.kt @@ -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) } diff --git a/packages/SystemUI/src/com/android/systemui/temporarydisplay/TemporaryViewDisplayController.kt b/packages/SystemUI/src/com/android/systemui/temporarydisplay/TemporaryViewDisplayController.kt index db7315f311ac1..532fbaad1cfdd 100644 --- a/packages/SystemUI/src/com/android/systemui/temporarydisplay/TemporaryViewDisplayController.kt +++ b/packages/SystemUI/src/com/android/systemui/temporarydisplay/TemporaryViewDisplayController.kt @@ -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) { + 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