Loading packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerBaseTest.java +1 −0 Original line number Diff line number Diff line Loading @@ -314,6 +314,7 @@ public class QSPanelControllerBaseTest extends SysuiTestCase { + " " + mockTileString + "\n" + " " + mockTileViewString + "\n" + " media bounds: null\n" + " media visibility: false\n" + " horizontal layout: false\n" + " last orientation: 0\n" + " mShouldUseSplitNotificationShade: false\n"; Loading packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselControllerLogger.kt +1 −1 Original line number Diff line number Diff line Loading @@ -77,7 +77,7 @@ constructor(@MediaCarouselControllerLog private val buffer: LogBuffer) { bool1 = visible bool2 = oldState }, { "media host visibility changed location=$location, visible:$visible, was:$oldState" }, { "media host visibility changed location=$int1, visible:$bool1, was:$bool2" }, ) } } Loading packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt +5 −2 Original line number Diff line number Diff line Loading @@ -208,6 +208,7 @@ constructor( cancelled = true animationPending = false rootView?.removeCallbacks(startAnimation) isCrossFadeAnimatorRunning = false } override fun onAnimationEnd(animation: Animator) { Loading Loading @@ -768,6 +769,7 @@ constructor( if (!willFade || isCurrentlyInGuidedTransformation() || !animate) { // if we're fading, we want the desired location / measurement only to change // once fully faded. This is happening in the host attachment logger.logMediaLocation("no fade", currentAttachmentLocation, desiredLocation) mediaCarouselController.onDesiredLocationChanged( desiredLocation, host, Loading Loading @@ -1188,8 +1190,8 @@ constructor( // immediately // when the desired location changes. This callback will update the measurement // of the carousel, only once we've faded out at the old location and then // reattach // to fade it in at the new location. // reattach to fade it in at the new location. logger.logMediaLocation("crossfade", currentAttachmentLocation, newLocation) mediaCarouselController.onDesiredLocationChanged( newLocation, getHost(newLocation), Loading @@ -1204,6 +1206,7 @@ constructor( * should remain in the previous location, while after the switch it should be at the desired * location. */ @MediaLocation private fun resolveLocationForFading(): Int { if (isCrossFadeAnimatorRunning) { // When animating between two hosts with a fade, let's keep ourselves in the old Loading packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHostStatesManager.kt +23 −1 Original line number Diff line number Diff line Loading @@ -17,19 +17,24 @@ package com.android.systemui.media.controls.ui.controller import com.android.app.tracing.traceSection import com.android.systemui.Dumpable import com.android.systemui.Flags.mediaControlsUmoInflationInBackground import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dump.DumpManager import com.android.systemui.media.controls.ui.view.MediaHostState import com.android.systemui.util.animation.MeasurementOutput import java.io.PrintWriter import javax.inject.Inject private val TAG = "MediaHostStatesManager" /** * A class responsible for managing all media host states of the various host locations and * coordinating the heights among different players. This class can be used to get the most up to * date state for any location. */ @SysUISingleton class MediaHostStatesManager @Inject constructor() { class MediaHostStatesManager @Inject constructor(dumpManager: DumpManager) : Dumpable { private val callbacks: MutableSet<Callback> = mutableSetOf() private val controllers: MutableSet<MediaViewController> = mutableSetOf() Loading @@ -43,6 +48,10 @@ class MediaHostStatesManager @Inject constructor() { /** A map with all media states of all locations. */ val mediaHostStates: MutableMap<Int, MediaHostState> = mutableMapOf() init { dumpManager.registerNormalDumpable(TAG, this) } /** * Notify that a media state for a given location has changed. Should only be called from Media * hosts themselves. Loading Loading @@ -125,6 +134,19 @@ class MediaHostStatesManager @Inject constructor() { controllers.remove(controller) } override fun dump(pw: PrintWriter, args: Array<out String>) { pw.apply { println("Controllers: $controllers") println("Callbacks: $callbacks") for ((location, size) in carouselSizes) { println("Size $location: ${size.measuredWidth} x ${size.measuredHeight}") } for ((location, state) in mediaHostStates) { println("Host $location: visible ${state.visible}") } } } interface Callback { /** * Notify the callbacks that a media state for a host has changed, and that the Loading packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewLogger.kt +1 −1 Original line number Diff line number Diff line Loading @@ -73,7 +73,7 @@ class MediaViewLogger @Inject constructor(@MediaViewLog private val buffer: LogB bool1 = shadeVisible bool2 = mediaVisible }, { "User visibility shade: $shadeVisible media: $mediaVisible" }, { "User visibility shade: $bool1 media: $bool2" }, ) } } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerBaseTest.java +1 −0 Original line number Diff line number Diff line Loading @@ -314,6 +314,7 @@ public class QSPanelControllerBaseTest extends SysuiTestCase { + " " + mockTileString + "\n" + " " + mockTileViewString + "\n" + " media bounds: null\n" + " media visibility: false\n" + " horizontal layout: false\n" + " last orientation: 0\n" + " mShouldUseSplitNotificationShade: false\n"; Loading
packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselControllerLogger.kt +1 −1 Original line number Diff line number Diff line Loading @@ -77,7 +77,7 @@ constructor(@MediaCarouselControllerLog private val buffer: LogBuffer) { bool1 = visible bool2 = oldState }, { "media host visibility changed location=$location, visible:$visible, was:$oldState" }, { "media host visibility changed location=$int1, visible:$bool1, was:$bool2" }, ) } } Loading
packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt +5 −2 Original line number Diff line number Diff line Loading @@ -208,6 +208,7 @@ constructor( cancelled = true animationPending = false rootView?.removeCallbacks(startAnimation) isCrossFadeAnimatorRunning = false } override fun onAnimationEnd(animation: Animator) { Loading Loading @@ -768,6 +769,7 @@ constructor( if (!willFade || isCurrentlyInGuidedTransformation() || !animate) { // if we're fading, we want the desired location / measurement only to change // once fully faded. This is happening in the host attachment logger.logMediaLocation("no fade", currentAttachmentLocation, desiredLocation) mediaCarouselController.onDesiredLocationChanged( desiredLocation, host, Loading Loading @@ -1188,8 +1190,8 @@ constructor( // immediately // when the desired location changes. This callback will update the measurement // of the carousel, only once we've faded out at the old location and then // reattach // to fade it in at the new location. // reattach to fade it in at the new location. logger.logMediaLocation("crossfade", currentAttachmentLocation, newLocation) mediaCarouselController.onDesiredLocationChanged( newLocation, getHost(newLocation), Loading @@ -1204,6 +1206,7 @@ constructor( * should remain in the previous location, while after the switch it should be at the desired * location. */ @MediaLocation private fun resolveLocationForFading(): Int { if (isCrossFadeAnimatorRunning) { // When animating between two hosts with a fade, let's keep ourselves in the old Loading
packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHostStatesManager.kt +23 −1 Original line number Diff line number Diff line Loading @@ -17,19 +17,24 @@ package com.android.systemui.media.controls.ui.controller import com.android.app.tracing.traceSection import com.android.systemui.Dumpable import com.android.systemui.Flags.mediaControlsUmoInflationInBackground import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dump.DumpManager import com.android.systemui.media.controls.ui.view.MediaHostState import com.android.systemui.util.animation.MeasurementOutput import java.io.PrintWriter import javax.inject.Inject private val TAG = "MediaHostStatesManager" /** * A class responsible for managing all media host states of the various host locations and * coordinating the heights among different players. This class can be used to get the most up to * date state for any location. */ @SysUISingleton class MediaHostStatesManager @Inject constructor() { class MediaHostStatesManager @Inject constructor(dumpManager: DumpManager) : Dumpable { private val callbacks: MutableSet<Callback> = mutableSetOf() private val controllers: MutableSet<MediaViewController> = mutableSetOf() Loading @@ -43,6 +48,10 @@ class MediaHostStatesManager @Inject constructor() { /** A map with all media states of all locations. */ val mediaHostStates: MutableMap<Int, MediaHostState> = mutableMapOf() init { dumpManager.registerNormalDumpable(TAG, this) } /** * Notify that a media state for a given location has changed. Should only be called from Media * hosts themselves. Loading Loading @@ -125,6 +134,19 @@ class MediaHostStatesManager @Inject constructor() { controllers.remove(controller) } override fun dump(pw: PrintWriter, args: Array<out String>) { pw.apply { println("Controllers: $controllers") println("Callbacks: $callbacks") for ((location, size) in carouselSizes) { println("Size $location: ${size.measuredWidth} x ${size.measuredHeight}") } for ((location, state) in mediaHostStates) { println("Host $location: visible ${state.visible}") } } } interface Callback { /** * Notify the callbacks that a media state for a host has changed, and that the Loading
packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewLogger.kt +1 −1 Original line number Diff line number Diff line Loading @@ -73,7 +73,7 @@ class MediaViewLogger @Inject constructor(@MediaViewLog private val buffer: LogB bool1 = shadeVisible bool2 = mediaVisible }, { "User visibility shade: $shadeVisible media: $mediaVisible" }, { "User visibility shade: $bool1 media: $bool2" }, ) } }