diff options
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 c982131be127..276a290e22ca 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 7b9d0b4205af..358534c25a1e 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 db7315f311ac..532fbaad1cfd 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<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" diff --git a/packages/SystemUI/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinator.kt b/packages/SystemUI/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinator.kt index f37ef828ebdd..fd2c70565d45 100644 --- a/packages/SystemUI/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinator.kt +++ b/packages/SystemUI/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinator.kt @@ -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) } diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/receiver/FakeMediaTttChipControllerReceiver.kt b/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/receiver/FakeMediaTttChipControllerReceiver.kt index bad3f0374a31..07a31093b104 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/receiver/FakeMediaTttChipControllerReceiver.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/receiver/FakeMediaTttChipControllerReceiver.kt @@ -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, diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/receiver/MediaTttChipControllerReceiverTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/receiver/MediaTttChipControllerReceiverTest.kt index ef0bfb7b6700..03ba3d39f5ea 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/receiver/MediaTttChipControllerReceiverTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/receiver/MediaTttChipControllerReceiverTest.kt @@ -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, diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/sender/MediaTttSenderCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/sender/MediaTttSenderCoordinatorTest.kt index b03a545f787f..4cc12c709fa7 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/sender/MediaTttSenderCoordinatorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/sender/MediaTttSenderCoordinatorTest.kt @@ -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, diff --git a/packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/TemporaryViewDisplayControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/TemporaryViewDisplayControllerTest.kt index 82153d5610a5..99e20124f597 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/TemporaryViewDisplayControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/TemporaryViewDisplayControllerTest.kt @@ -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, diff --git a/packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinatorTest.kt index 2e4d8e74ad6e..d3411c2b4416 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinatorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinatorTest.kt @@ -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, diff --git a/packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/chipbar/FakeChipbarCoordinator.kt b/packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/chipbar/FakeChipbarCoordinator.kt index d5167b3890b9..b9a5bd7081c4 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/chipbar/FakeChipbarCoordinator.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/chipbar/FakeChipbarCoordinator.kt @@ -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, |