diff options
| author | 2023-11-09 17:19:11 +0000 | |
|---|---|---|
| committer | 2023-11-09 17:19:11 +0000 | |
| commit | f0ffbec51b3c8e7e1737bf87c58439d3a6011568 (patch) | |
| tree | 1249375efe7ae5dbd6f885f02a9b2d4da6987349 | |
| parent | fdc50fb6c80be3f7e4befaab8d8693dc46ec9725 (diff) | |
| parent | 1c1de5b81f35a5ed243d139fc6a0b20c669ad4c4 (diff) | |
Merge "Dump KeyguardMediaController state" into main
2 files changed, 59 insertions, 4 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/KeyguardMediaController.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/KeyguardMediaController.kt index 83a6e58cc444..773c292befcf 100644 --- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/KeyguardMediaController.kt +++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/KeyguardMediaController.kt @@ -23,11 +23,14 @@ import android.net.Uri import android.os.Handler import android.os.UserHandle import android.provider.Settings +import android.util.Log import android.view.View import android.view.ViewGroup import androidx.annotation.VisibleForTesting +import com.android.systemui.Dumpable import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Main +import com.android.systemui.dump.DumpManager import com.android.systemui.media.dagger.MediaModule.KEYGUARD import com.android.systemui.plugins.statusbar.StatusBarStateController import com.android.systemui.statusbar.StatusBarState @@ -36,7 +39,11 @@ import com.android.systemui.statusbar.notification.stack.MediaContainerView import com.android.systemui.statusbar.phone.KeyguardBypassController import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.SplitShadeStateController +import com.android.systemui.util.asIndenting +import com.android.systemui.util.println import com.android.systemui.util.settings.SecureSettings +import com.android.systemui.util.withIncreasedIndent +import java.io.PrintWriter import javax.inject.Inject import javax.inject.Named @@ -55,13 +62,18 @@ constructor( private val secureSettings: SecureSettings, @Main private val handler: Handler, configurationController: ConfigurationController, - private val splitShadeStateController: SplitShadeStateController -) { + private val splitShadeStateController: SplitShadeStateController, + dumpManager: DumpManager, +) : Dumpable { + /** It's added for debugging purpose to directly see last received StatusBarState. */ + private var lastReceivedStatusBarState = -1 init { + dumpManager.registerDumpable(this) statusBarStateController.addCallback( object : StatusBarStateController.StateListener { override fun onStateChanged(newState: Int) { + lastReceivedStatusBarState = newState refreshMediaPosition() } @@ -206,7 +218,17 @@ constructor( } fun refreshMediaPosition() { - val keyguardOrUserSwitcher = (statusBarStateController.state == StatusBarState.KEYGUARD) + val currentState = statusBarStateController.state + if (lastReceivedStatusBarState != -1 && currentState != lastReceivedStatusBarState) { + Log.wtfStack( + TAG, + "currentState[${StatusBarState.toString(currentState)}] is " + + "different from the last " + + "received one[${StatusBarState.toString(lastReceivedStatusBarState)}]." + ) + } + + val keyguardOrUserSwitcher = (currentState == StatusBarState.KEYGUARD) // mediaHost.visible required for proper animations handling visible = mediaHost.visible && @@ -263,4 +285,34 @@ constructor( visibilityChangedListener?.invoke(newVisibility == View.VISIBLE) } } + + override fun dump(pw: PrintWriter, args: Array<out String>) { + pw.asIndenting().run { + println("KeyguardMediaController") + withIncreasedIndent { + println("Self", this@KeyguardMediaController) + println("visible", visible) + println("useSplitShade", useSplitShade) + println("allowMediaPlayerOnLockScreen", allowMediaPlayerOnLockScreen) + println("bypassController.bypassEnabled", bypassController.bypassEnabled) + println("isDozeWakeUpAnimationWaiting", isDozeWakeUpAnimationWaiting) + println("singlePaneContainer", singlePaneContainer) + println("splitShadeContainer", splitShadeContainer) + if (lastReceivedStatusBarState != -1) { + println( + "lastReceivedStatusBarState", + StatusBarState.toString(lastReceivedStatusBarState) + ) + } + println( + "statusBarStateController.state", + StatusBarState.toString(statusBarStateController.state) + ) + } + } + } + + private companion object { + private const val TAG = "KeyguardMediaController" + } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/KeyguardMediaControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/KeyguardMediaControllerTest.kt index 7ad2ce8ae110..f4293f035cd1 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/KeyguardMediaControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/KeyguardMediaControllerTest.kt @@ -24,6 +24,7 @@ import android.view.View.GONE import android.view.View.VISIBLE import android.widget.FrameLayout import com.android.systemui.SysuiTestCase +import com.android.systemui.dump.DumpManager import com.android.systemui.plugins.statusbar.StatusBarStateController import com.android.systemui.statusbar.StatusBarState import com.android.systemui.statusbar.SysuiStatusBarStateController @@ -32,6 +33,7 @@ import com.android.systemui.statusbar.phone.KeyguardBypassController import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.ResourcesSplitShadeStateController import com.android.systemui.util.animation.UniqueObjectHostView +import com.android.systemui.util.mockito.mock import com.android.systemui.util.mockito.whenever import com.android.systemui.util.settings.FakeSettings import com.android.systemui.utils.os.FakeHandler @@ -91,7 +93,8 @@ class KeyguardMediaControllerTest : SysuiTestCase() { settings, fakeHandler, configurationController, - ResourcesSplitShadeStateController() + ResourcesSplitShadeStateController(), + mock<DumpManager>() ) keyguardMediaController.attachSinglePaneContainer(mediaContainerView) keyguardMediaController.useSplitShade = false |