Loading packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt +2 −1 Original line number Diff line number Diff line Loading @@ -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") Loading packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt +19 −1 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading Loading @@ -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 Loading Loading @@ -476,6 +480,7 @@ constructor( } init { dumpManager.registerNormalDumpable(TAG, this) updateConfiguration() configurationController.addCallback( object : ConfigurationController.ConfigurationListener { Loading Loading @@ -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 Loading packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewController.kt +2 −2 Original line number Diff line number Diff line Loading @@ -883,7 +883,6 @@ constructor( currentEndLocation = endLocation currentStartLocation = startLocation currentTransitionProgress = transitionProgress logger.logMediaLocation("setCurrentState", startLocation, endLocation) val shouldAnimate = animateNextStateChange && !applyImmediately Loading @@ -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 } Loading Loading @@ -949,7 +949,7 @@ constructor( ) } logger.logMediaSize( "setCurrentState (progress $transitionProgress)", "setCurrentState $startLocation -> $endLocation (progress $transitionProgress)", result.width, result.height, ) Loading packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManagerTest.kt +25 −22 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 Loading Loading @@ -166,6 +168,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { testScope.backgroundScope, ResourcesSplitShadeStateController(), logger, dumpManager, ) verify(wakefulnessLifecycle).addObserver(wakefullnessObserver.capture()) verify(statusBarStateController).addCallback(statusBarCallback.capture()) Loading Loading @@ -209,7 +212,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), anyBoolean(), anyLong(), anyLong() anyLong(), ) val observer = wakefullnessObserver.value assertNotNull("lifecycle observer wasn't registered", observer) Loading @@ -222,7 +225,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), anyBoolean(), anyLong(), anyLong() anyLong(), ) } Loading @@ -236,7 +239,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), anyBoolean(), anyLong(), anyLong() anyLong(), ) val observer = wakefullnessObserver.value assertNotNull("lifecycle observer wasn't registered", observer) Loading @@ -249,7 +252,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), anyBoolean(), anyLong(), anyLong() anyLong(), ) } Loading @@ -263,7 +266,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), anyBoolean(), anyLong(), anyLong() anyLong(), ) clearInvocations(mediaCarouselController) configurationController.notifyConfigurationChanged() Loading @@ -273,7 +276,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), anyBoolean(), anyLong(), anyLong() anyLong(), ) } Loading @@ -287,7 +290,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), anyBoolean(), anyLong(), anyLong() anyLong(), ) val observer = wakefullnessObserver.value assertNotNull("lifecycle observer wasn't registered", observer) Loading @@ -299,7 +302,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), anyBoolean(), anyLong(), anyLong() anyLong(), ) } Loading @@ -315,7 +318,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), eq(false), anyLong(), anyLong() anyLong(), ) clearInvocations(mediaCarouselController) Loading @@ -327,7 +330,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), eq(false), anyLong(), anyLong() anyLong(), ) // Let's make sure alpha is set Loading Loading @@ -528,7 +531,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { nullable(), eq(false), anyLong(), anyLong() anyLong(), ) clearInvocations(mediaCarouselController) Loading @@ -539,7 +542,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), eq(false), anyLong(), anyLong() anyLong(), ) } Loading @@ -559,7 +562,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { nullable(), eq(false), anyLong(), anyLong() anyLong(), ) clearInvocations(mediaCarouselController) Loading @@ -576,7 +579,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), eq(false), anyLong(), anyLong() anyLong(), ) } Loading @@ -597,7 +600,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { nullable(), eq(false), anyLong(), anyLong() anyLong(), ) val captor = ArgumentCaptor.forClass(Boolean::class.java) Loading Loading @@ -630,7 +633,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { nullable(), eq(false), anyLong(), anyLong() anyLong(), ) val captor = ArgumentCaptor.forClass(Boolean::class.java) Loading Loading @@ -666,7 +669,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { nullable(), eq(false), anyLong(), anyLong() anyLong(), ) } Loading @@ -689,7 +692,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { nullable(), eq(false), anyLong(), anyLong() anyLong(), ) clearInvocations(mediaCarouselController) Loading @@ -704,7 +707,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), eq(false), anyLong(), anyLong() anyLong(), ) } Loading Loading @@ -734,7 +737,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { anyOrNull(), eq(false), anyLong(), anyLong() anyLong(), ) clearInvocations(mediaCarouselController) Loading @@ -749,7 +752,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), eq(false), anyLong(), anyLong() anyLong(), ) } Loading Loading @@ -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, ) } Loading Loading
packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt +2 −1 Original line number Diff line number Diff line Loading @@ -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") Loading
packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt +19 −1 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading Loading @@ -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 Loading Loading @@ -476,6 +480,7 @@ constructor( } init { dumpManager.registerNormalDumpable(TAG, this) updateConfiguration() configurationController.addCallback( object : ConfigurationController.ConfigurationListener { Loading Loading @@ -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 Loading
packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewController.kt +2 −2 Original line number Diff line number Diff line Loading @@ -883,7 +883,6 @@ constructor( currentEndLocation = endLocation currentStartLocation = startLocation currentTransitionProgress = transitionProgress logger.logMediaLocation("setCurrentState", startLocation, endLocation) val shouldAnimate = animateNextStateChange && !applyImmediately Loading @@ -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 } Loading Loading @@ -949,7 +949,7 @@ constructor( ) } logger.logMediaSize( "setCurrentState (progress $transitionProgress)", "setCurrentState $startLocation -> $endLocation (progress $transitionProgress)", result.width, result.height, ) Loading
packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManagerTest.kt +25 −22 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 Loading Loading @@ -166,6 +168,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { testScope.backgroundScope, ResourcesSplitShadeStateController(), logger, dumpManager, ) verify(wakefulnessLifecycle).addObserver(wakefullnessObserver.capture()) verify(statusBarStateController).addCallback(statusBarCallback.capture()) Loading Loading @@ -209,7 +212,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), anyBoolean(), anyLong(), anyLong() anyLong(), ) val observer = wakefullnessObserver.value assertNotNull("lifecycle observer wasn't registered", observer) Loading @@ -222,7 +225,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), anyBoolean(), anyLong(), anyLong() anyLong(), ) } Loading @@ -236,7 +239,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), anyBoolean(), anyLong(), anyLong() anyLong(), ) val observer = wakefullnessObserver.value assertNotNull("lifecycle observer wasn't registered", observer) Loading @@ -249,7 +252,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), anyBoolean(), anyLong(), anyLong() anyLong(), ) } Loading @@ -263,7 +266,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), anyBoolean(), anyLong(), anyLong() anyLong(), ) clearInvocations(mediaCarouselController) configurationController.notifyConfigurationChanged() Loading @@ -273,7 +276,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), anyBoolean(), anyLong(), anyLong() anyLong(), ) } Loading @@ -287,7 +290,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), anyBoolean(), anyLong(), anyLong() anyLong(), ) val observer = wakefullnessObserver.value assertNotNull("lifecycle observer wasn't registered", observer) Loading @@ -299,7 +302,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), anyBoolean(), anyLong(), anyLong() anyLong(), ) } Loading @@ -315,7 +318,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), eq(false), anyLong(), anyLong() anyLong(), ) clearInvocations(mediaCarouselController) Loading @@ -327,7 +330,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), eq(false), anyLong(), anyLong() anyLong(), ) // Let's make sure alpha is set Loading Loading @@ -528,7 +531,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { nullable(), eq(false), anyLong(), anyLong() anyLong(), ) clearInvocations(mediaCarouselController) Loading @@ -539,7 +542,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), eq(false), anyLong(), anyLong() anyLong(), ) } Loading @@ -559,7 +562,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { nullable(), eq(false), anyLong(), anyLong() anyLong(), ) clearInvocations(mediaCarouselController) Loading @@ -576,7 +579,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), eq(false), anyLong(), anyLong() anyLong(), ) } Loading @@ -597,7 +600,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { nullable(), eq(false), anyLong(), anyLong() anyLong(), ) val captor = ArgumentCaptor.forClass(Boolean::class.java) Loading Loading @@ -630,7 +633,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { nullable(), eq(false), anyLong(), anyLong() anyLong(), ) val captor = ArgumentCaptor.forClass(Boolean::class.java) Loading Loading @@ -666,7 +669,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { nullable(), eq(false), anyLong(), anyLong() anyLong(), ) } Loading @@ -689,7 +692,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { nullable(), eq(false), anyLong(), anyLong() anyLong(), ) clearInvocations(mediaCarouselController) Loading @@ -704,7 +707,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), eq(false), anyLong(), anyLong() anyLong(), ) } Loading Loading @@ -734,7 +737,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { anyOrNull(), eq(false), anyLong(), anyLong() anyLong(), ) clearInvocations(mediaCarouselController) Loading @@ -749,7 +752,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), eq(false), anyLong(), anyLong() anyLong(), ) } Loading Loading @@ -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, ) } Loading