Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f0ffbec5 authored by Ibrahim Yilmaz's avatar Ibrahim Yilmaz Committed by Android (Google) Code Review
Browse files

Merge "Dump KeyguardMediaController state" into main

parents fdc50fb6 1c1de5b8
Loading
Loading
Loading
Loading
+55 −3
Original line number Diff line number Diff line
@@ -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"
    }
}
+4 −1
Original line number Diff line number Diff line
@@ -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