summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt20
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewController.kt4
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManagerTest.kt47
4 files changed, 48 insertions, 26 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt
index 4e97eb5bc9d1..47161191b229 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt
@@ -1744,7 +1744,8 @@ constructor(
println("location: $desiredLocation")
println(
"state: ${desiredHostState?.expansion}, " +
- "only active ${desiredHostState?.showsOnlyActiveMedia}"
+ "only active ${desiredHostState?.showsOnlyActiveMedia}, " +
+ "visible ${desiredHostState?.visible}"
)
println("isSwipedAway: ${MediaPlayerData.isSwipedAway}")
println("allowMediaPlayerOnLockScreen: $allowMediaPlayerOnLockScreen")
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt
index b4dabbe036e9..a6aa159692ec 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt
@@ -37,12 +37,14 @@ import com.android.app.animation.Interpolators
import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.app.tracing.traceSection
import com.android.keyguard.KeyguardViewController
+import com.android.systemui.Dumpable
import com.android.systemui.Flags.mediaControlsLockscreenShadeBugFix
import com.android.systemui.communal.ui.viewmodel.CommunalTransitionViewModel
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dreams.DreamOverlayStateController
+import com.android.systemui.dump.DumpManager
import com.android.systemui.keyguard.WakefulnessLifecycle
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
import com.android.systemui.media.controls.domain.pipeline.MediaDataManager
@@ -62,6 +64,7 @@ import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.statusbar.policy.SplitShadeStateController
import com.android.systemui.util.animation.UniqueObjectHostView
import com.android.systemui.util.settings.SecureSettings
+import java.io.PrintWriter
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -119,7 +122,8 @@ constructor(
@Application private val coroutineScope: CoroutineScope,
private val splitShadeStateController: SplitShadeStateController,
private val logger: MediaViewLogger,
-) {
+ private val dumpManager: DumpManager,
+) : Dumpable {
/** Track the media player setting status on lock screen. */
private var allowMediaPlayerOnLockScreen: Boolean = true
@@ -476,6 +480,7 @@ constructor(
}
init {
+ dumpManager.registerNormalDumpable(TAG, this)
updateConfiguration()
configurationController.addCallback(
object : ConfigurationController.ConfigurationListener {
@@ -1344,6 +1349,19 @@ constructor(
return isCommunalShowing && !isPrimaryBouncerShowing && !isAnyShadeFullyExpanded
}
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
+ pw.apply {
+ println(
+ "current attachment: $currentAttachmentLocation, " +
+ "desired location: $desiredLocation, " +
+ "visible ${getHost(desiredLocation)?.visible}"
+ )
+ println("previous location: $previousLocation")
+ println("bounds: $currentBounds, target $targetBounds")
+ println("clipping: $currentClipping, target $targetClipping")
+ }
+ }
+
companion object {
/** Attached in expanded quick settings */
const val LOCATION_QS = 0
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewController.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewController.kt
index a2ddc20844e7..86e92941256b 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewController.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewController.kt
@@ -883,7 +883,6 @@ constructor(
currentEndLocation = endLocation
currentStartLocation = startLocation
currentTransitionProgress = transitionProgress
- logger.logMediaLocation("setCurrentState", startLocation, endLocation)
val shouldAnimate = animateNextStateChange && !applyImmediately
@@ -900,6 +899,7 @@ constructor(
// If the view isn't bound, we can drop the animation, otherwise we'll execute it
animateNextStateChange = false
if (transitionLayout == null) {
+ logger.logMediaLocation("setCurrentState: view not bound", startLocation, endLocation)
return
}
@@ -949,7 +949,7 @@ constructor(
)
}
logger.logMediaSize(
- "setCurrentState (progress $transitionProgress)",
+ "setCurrentState $startLocation -> $endLocation (progress $transitionProgress)",
result.width,
result.height,
)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManagerTest.kt
index 0508c2cf0426..072caa74df20 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManagerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManagerTest.kt
@@ -31,6 +31,7 @@ import com.android.systemui.communal.shared.model.CommunalScenes
import com.android.systemui.communal.ui.viewmodel.communalTransitionViewModel
import com.android.systemui.controls.controller.ControlsControllerImplTest.Companion.eq
import com.android.systemui.dreams.DreamOverlayStateController
+import com.android.systemui.dump.DumpManager
import com.android.systemui.flags.DisableSceneContainer
import com.android.systemui.keyguard.WakefulnessLifecycle
import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
@@ -110,6 +111,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
@Mock private lateinit var dreamOverlayStateController: DreamOverlayStateController
@Mock private lateinit var shadeInteractor: ShadeInteractor
@Mock lateinit var logger: MediaViewLogger
+ @Mock lateinit var dumpManager: DumpManager
@Captor
private lateinit var wakefullnessObserver: ArgumentCaptor<(WakefulnessLifecycle.Observer)>
@Captor
@@ -166,6 +168,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
testScope.backgroundScope,
ResourcesSplitShadeStateController(),
logger,
+ dumpManager,
)
verify(wakefulnessLifecycle).addObserver(wakefullnessObserver.capture())
verify(statusBarStateController).addCallback(statusBarCallback.capture())
@@ -209,7 +212,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
any<MediaHostState>(),
anyBoolean(),
anyLong(),
- anyLong()
+ anyLong(),
)
val observer = wakefullnessObserver.value
assertNotNull("lifecycle observer wasn't registered", observer)
@@ -222,7 +225,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
any<MediaHostState>(),
anyBoolean(),
anyLong(),
- anyLong()
+ anyLong(),
)
}
@@ -236,7 +239,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
any<MediaHostState>(),
anyBoolean(),
anyLong(),
- anyLong()
+ anyLong(),
)
val observer = wakefullnessObserver.value
assertNotNull("lifecycle observer wasn't registered", observer)
@@ -249,7 +252,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
any<MediaHostState>(),
anyBoolean(),
anyLong(),
- anyLong()
+ anyLong(),
)
}
@@ -263,7 +266,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
any<MediaHostState>(),
anyBoolean(),
anyLong(),
- anyLong()
+ anyLong(),
)
clearInvocations(mediaCarouselController)
configurationController.notifyConfigurationChanged()
@@ -273,7 +276,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
any<MediaHostState>(),
anyBoolean(),
anyLong(),
- anyLong()
+ anyLong(),
)
}
@@ -287,7 +290,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
any<MediaHostState>(),
anyBoolean(),
anyLong(),
- anyLong()
+ anyLong(),
)
val observer = wakefullnessObserver.value
assertNotNull("lifecycle observer wasn't registered", observer)
@@ -299,7 +302,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
any<MediaHostState>(),
anyBoolean(),
anyLong(),
- anyLong()
+ anyLong(),
)
}
@@ -315,7 +318,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
any<MediaHostState>(),
eq(false),
anyLong(),
- anyLong()
+ anyLong(),
)
clearInvocations(mediaCarouselController)
@@ -327,7 +330,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
any<MediaHostState>(),
eq(false),
anyLong(),
- anyLong()
+ anyLong(),
)
// Let's make sure alpha is set
@@ -528,7 +531,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
nullable(),
eq(false),
anyLong(),
- anyLong()
+ anyLong(),
)
clearInvocations(mediaCarouselController)
@@ -539,7 +542,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
any<MediaHostState>(),
eq(false),
anyLong(),
- anyLong()
+ anyLong(),
)
}
@@ -559,7 +562,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
nullable(),
eq(false),
anyLong(),
- anyLong()
+ anyLong(),
)
clearInvocations(mediaCarouselController)
@@ -576,7 +579,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
any<MediaHostState>(),
eq(false),
anyLong(),
- anyLong()
+ anyLong(),
)
}
@@ -597,7 +600,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
nullable(),
eq(false),
anyLong(),
- anyLong()
+ anyLong(),
)
val captor = ArgumentCaptor.forClass(Boolean::class.java)
@@ -630,7 +633,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
nullable(),
eq(false),
anyLong(),
- anyLong()
+ anyLong(),
)
val captor = ArgumentCaptor.forClass(Boolean::class.java)
@@ -666,7 +669,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
nullable(),
eq(false),
anyLong(),
- anyLong()
+ anyLong(),
)
}
@@ -689,7 +692,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
nullable(),
eq(false),
anyLong(),
- anyLong()
+ anyLong(),
)
clearInvocations(mediaCarouselController)
@@ -704,7 +707,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
any<MediaHostState>(),
eq(false),
anyLong(),
- anyLong()
+ anyLong(),
)
}
@@ -734,7 +737,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
anyOrNull(),
eq(false),
anyLong(),
- anyLong()
+ anyLong(),
)
clearInvocations(mediaCarouselController)
@@ -749,7 +752,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
any<MediaHostState>(),
eq(false),
anyLong(),
- anyLong()
+ anyLong(),
)
}
@@ -788,7 +791,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
whenever(statusBarStateController.state).thenReturn(StatusBarState.SHADE_LOCKED)
statusBarCallback.value.onStatePreChange(
StatusBarState.KEYGUARD,
- StatusBarState.SHADE_LOCKED
+ StatusBarState.SHADE_LOCKED,
)
}