From cb05797cb1fb15ffa175f280ab2b026d194f2c86 Mon Sep 17 00:00:00 2001 From: Caitlin Shkuratov Date: Wed, 5 Apr 2023 16:42:15 +0000 Subject: [PATCH] [Central Surfaces] Make LetterboxAppearanceCalculator a singleton. Bug: 277762009 Test: compiles Test: `adb shell dumpsys activity service com.android.systemui/.SystemUIService LetterboxAppearanceCalculator` -> shows dump Test: atest LeterboxAppearanceCalculatorTest Change-Id: I3713c8ed9a5408283374229ebbf3d47497c716b5 --- .../com/android/systemui/dump/DumpManager.kt | 5 ++++ .../phone/LetterboxAppearanceCalculator.kt | 26 ++++++++----------- .../CentralSurfacesStartableModule.java | 6 ----- 3 files changed, 16 insertions(+), 21 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/dump/DumpManager.kt b/packages/SystemUI/src/com/android/systemui/dump/DumpManager.kt index 276a290e22cab..7d1ffca88d9f9 100644 --- a/packages/SystemUI/src/com/android/systemui/dump/DumpManager.kt +++ b/packages/SystemUI/src/com/android/systemui/dump/DumpManager.kt @@ -39,6 +39,11 @@ open class DumpManager @Inject constructor() { private val dumpables: MutableMap> = ArrayMap() private val buffers: MutableMap> = ArrayMap() + /** See [registerCriticalDumpable]. */ + fun registerCriticalDumpable(module: Dumpable) { + registerCriticalDumpable(module::class.java.simpleName, module) + } + /** * Registers a dumpable to be called during the CRITICAL section of the bug report. * diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LetterboxAppearanceCalculator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LetterboxAppearanceCalculator.kt index 398985402e76a..f7426451fa501 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LetterboxAppearanceCalculator.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LetterboxAppearanceCalculator.kt @@ -26,10 +26,10 @@ import android.view.WindowInsetsController.Appearance import com.android.internal.statusbar.LetterboxDetails import com.android.internal.util.ContrastColorUtil import com.android.internal.view.AppearanceRegion +import com.android.systemui.Dumpable +import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dump.DumpManager import com.android.systemui.statusbar.core.StatusBarInitializer.OnStatusBarViewInitializedListener -import com.android.systemui.statusbar.phone.dagger.CentralSurfacesComponent -import com.android.systemui.statusbar.phone.dagger.CentralSurfacesComponent.CentralSurfacesScope import com.android.systemui.statusbar.phone.fragment.dagger.StatusBarFragmentComponent import java.io.PrintWriter import java.util.Arrays @@ -50,25 +50,21 @@ class LetterboxAppearance( * Responsible for calculating the [Appearance] and [AppearanceRegion] for the status bar when apps * are letterboxed. */ -@CentralSurfacesScope +@SysUISingleton class LetterboxAppearanceCalculator @Inject constructor( private val lightBarController: LightBarController, - private val dumpManager: DumpManager, + dumpManager: DumpManager, private val letterboxBackgroundProvider: LetterboxBackgroundProvider, -) : OnStatusBarViewInitializedListener, CentralSurfacesComponent.Startable { +) : OnStatusBarViewInitializedListener, Dumpable { + + init { + dumpManager.registerCriticalDumpable(this) + } private var statusBarBoundsProvider: StatusBarBoundsProvider? = null - override fun start() { - dumpManager.registerCriticalDumpable(javaClass.simpleName) { pw, _ -> dump(pw) } - } - - override fun stop() { - dumpManager.unregisterDumpable(javaClass.simpleName) - } - private var lastAppearance: Int? = null private var lastAppearanceRegions: Array? = null private var lastLetterboxes: Array? = null @@ -216,8 +212,8 @@ constructor( return this.intersect(other) } - private fun dump(printWriter: PrintWriter) { - printWriter.println( + override fun dump(pw: PrintWriter, args: Array) { + pw.println( """ lastAppearance: ${lastAppearance?.toAppearanceString()} lastAppearanceRegion: ${Arrays.toString(lastAppearanceRegions)}, diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/CentralSurfacesStartableModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/CentralSurfacesStartableModule.java index 07356a2807116..f72e74b77aeac 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/CentralSurfacesStartableModule.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/CentralSurfacesStartableModule.java @@ -16,7 +16,6 @@ package com.android.systemui.statusbar.phone.dagger; -import com.android.systemui.statusbar.phone.LetterboxAppearanceCalculator; import com.android.systemui.statusbar.phone.SystemBarAttributesListener; import dagger.Binds; @@ -31,11 +30,6 @@ interface CentralSurfacesStartableModule { @Multibinds Set multibindStartables(); - @Binds - @IntoSet - CentralSurfacesComponent.Startable letterboxAppearanceCalculator( - LetterboxAppearanceCalculator letterboxAppearanceCalculator); - @Binds @IntoSet CentralSurfacesComponent.Startable sysBarAttrsListener(