Loading packages/SystemUI/src/com/android/systemui/media/controls/ui/KeyguardMediaController.kt +16 −1 Original line number Diff line number Diff line Loading @@ -128,6 +128,15 @@ constructor( var visibilityChangedListener: ((Boolean) -> Unit)? = null /** * Whether the doze wake up animation is delayed and we are currently waiting for it to start. */ var isDozeWakeUpAnimationWaiting: Boolean = false set(value) { field = value refreshMediaPosition() } /** single pane media container placed at the top of the notifications list */ var singlePaneContainer: MediaContainerView? = null private set Loading Loading @@ -221,7 +230,13 @@ constructor( // by the clock. This is not the case for single-line clock though. // For single shade, we don't need to do it, because media is a child of NSSL, which already // gets hidden on AOD. return !statusBarStateController.isDozing // Media also has to be hidden when waking up from dozing, and the doze wake up animation is // delayed and waiting to be started. // This is to stay in sync with the delaying of the horizontal alignment of the rest of the // keyguard container, that is also delayed until the "wait" is over. // If we show media during this waiting period, the shade will still be centered, and using // the entire width of the screen, and making media show fully stretched. return !statusBarStateController.isDozing && !isDozeWakeUpAnimationWaiting } private fun showMediaPlayer() { Loading packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java +1 −0 Original line number Diff line number Diff line Loading @@ -1627,6 +1627,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump mWillPlayDelayedDozeAmountAnimation = willPlay; mWakeUpCoordinator.logDelayingClockWakeUpAnimation(willPlay); mKeyguardMediaController.setDozeWakeUpAnimationWaiting(willPlay); // Once changing this value, see if we should move the clock. positionClockAndNotifications(); Loading packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/KeyguardMediaControllerTest.kt +22 −0 Original line number Diff line number Diff line Loading @@ -192,6 +192,17 @@ class KeyguardMediaControllerTest : SysuiTestCase() { assertThat(splitShadeContainer.visibility).isEqualTo(GONE) } @Test fun dozeWakeUpAnimationWaiting_inSplitShade_mediaIsHidden() { val splitShadeContainer = FrameLayout(context) keyguardMediaController.attachSplitShadeContainer(splitShadeContainer) keyguardMediaController.useSplitShade = true keyguardMediaController.isDozeWakeUpAnimationWaiting = true assertThat(splitShadeContainer.visibility).isEqualTo(GONE) } @Test fun dozing_inSingleShade_mediaIsVisible() { val splitShadeContainer = FrameLayout(context) Loading @@ -203,6 +214,17 @@ class KeyguardMediaControllerTest : SysuiTestCase() { assertThat(mediaContainerView.visibility).isEqualTo(VISIBLE) } @Test fun dozeWakeUpAnimationWaiting_inSingleShade_mediaIsVisible() { val splitShadeContainer = FrameLayout(context) keyguardMediaController.attachSplitShadeContainer(splitShadeContainer) keyguardMediaController.useSplitShade = false keyguardMediaController.isDozeWakeUpAnimationWaiting = true assertThat(mediaContainerView.visibility).isEqualTo(VISIBLE) } private fun setDozing() { whenever(statusBarStateController.isDozing).thenReturn(true) statusBarStateListener.onDozingChanged(true) Loading packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java +11 −0 Original line number Diff line number Diff line Loading @@ -513,6 +513,17 @@ public class NotificationPanelViewControllerTest extends NotificationPanelViewCo assertKeyguardStatusViewNotCentered(); } @Test public void keyguardStatusView_willPlayDelayedDoze_notifiesKeyguardMediaController() { when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(2); mStatusBarStateController.setState(KEYGUARD); enableSplitShade(/* enabled= */ true); mNotificationPanelViewController.setWillPlayDelayedDozeAmountAnimation(true); verify(mKeyguardMediaController).setDozeWakeUpAnimationWaiting(true); } @Test public void keyguardStatusView_willPlayDelayedDoze_isCentered_thenStillCenteredIfNoNotifs() { when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(0); Loading Loading
packages/SystemUI/src/com/android/systemui/media/controls/ui/KeyguardMediaController.kt +16 −1 Original line number Diff line number Diff line Loading @@ -128,6 +128,15 @@ constructor( var visibilityChangedListener: ((Boolean) -> Unit)? = null /** * Whether the doze wake up animation is delayed and we are currently waiting for it to start. */ var isDozeWakeUpAnimationWaiting: Boolean = false set(value) { field = value refreshMediaPosition() } /** single pane media container placed at the top of the notifications list */ var singlePaneContainer: MediaContainerView? = null private set Loading Loading @@ -221,7 +230,13 @@ constructor( // by the clock. This is not the case for single-line clock though. // For single shade, we don't need to do it, because media is a child of NSSL, which already // gets hidden on AOD. return !statusBarStateController.isDozing // Media also has to be hidden when waking up from dozing, and the doze wake up animation is // delayed and waiting to be started. // This is to stay in sync with the delaying of the horizontal alignment of the rest of the // keyguard container, that is also delayed until the "wait" is over. // If we show media during this waiting period, the shade will still be centered, and using // the entire width of the screen, and making media show fully stretched. return !statusBarStateController.isDozing && !isDozeWakeUpAnimationWaiting } private fun showMediaPlayer() { Loading
packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java +1 −0 Original line number Diff line number Diff line Loading @@ -1627,6 +1627,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump mWillPlayDelayedDozeAmountAnimation = willPlay; mWakeUpCoordinator.logDelayingClockWakeUpAnimation(willPlay); mKeyguardMediaController.setDozeWakeUpAnimationWaiting(willPlay); // Once changing this value, see if we should move the clock. positionClockAndNotifications(); Loading
packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/KeyguardMediaControllerTest.kt +22 −0 Original line number Diff line number Diff line Loading @@ -192,6 +192,17 @@ class KeyguardMediaControllerTest : SysuiTestCase() { assertThat(splitShadeContainer.visibility).isEqualTo(GONE) } @Test fun dozeWakeUpAnimationWaiting_inSplitShade_mediaIsHidden() { val splitShadeContainer = FrameLayout(context) keyguardMediaController.attachSplitShadeContainer(splitShadeContainer) keyguardMediaController.useSplitShade = true keyguardMediaController.isDozeWakeUpAnimationWaiting = true assertThat(splitShadeContainer.visibility).isEqualTo(GONE) } @Test fun dozing_inSingleShade_mediaIsVisible() { val splitShadeContainer = FrameLayout(context) Loading @@ -203,6 +214,17 @@ class KeyguardMediaControllerTest : SysuiTestCase() { assertThat(mediaContainerView.visibility).isEqualTo(VISIBLE) } @Test fun dozeWakeUpAnimationWaiting_inSingleShade_mediaIsVisible() { val splitShadeContainer = FrameLayout(context) keyguardMediaController.attachSplitShadeContainer(splitShadeContainer) keyguardMediaController.useSplitShade = false keyguardMediaController.isDozeWakeUpAnimationWaiting = true assertThat(mediaContainerView.visibility).isEqualTo(VISIBLE) } private fun setDozing() { whenever(statusBarStateController.isDozing).thenReturn(true) statusBarStateListener.onDozingChanged(true) Loading
packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java +11 −0 Original line number Diff line number Diff line Loading @@ -513,6 +513,17 @@ public class NotificationPanelViewControllerTest extends NotificationPanelViewCo assertKeyguardStatusViewNotCentered(); } @Test public void keyguardStatusView_willPlayDelayedDoze_notifiesKeyguardMediaController() { when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(2); mStatusBarStateController.setState(KEYGUARD); enableSplitShade(/* enabled= */ true); mNotificationPanelViewController.setWillPlayDelayedDozeAmountAnimation(true); verify(mKeyguardMediaController).setDozeWakeUpAnimationWaiting(true); } @Test public void keyguardStatusView_willPlayDelayedDoze_isCentered_thenStillCenteredIfNoNotifs() { when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(0); Loading