diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java index a0f8d05ebd0e0..94d6e0b3ad7d9 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java @@ -1141,8 +1141,13 @@ public class NotificationPanelViewController extends PanelViewController R.dimen.split_shade_notifications_scrim_margin_bottom); int qsWidth = mResources.getDimensionPixelSize(R.dimen.qs_panel_width); int panelWidth = mResources.getDimensionPixelSize(R.dimen.notification_panel_width); - mShouldUseSplitNotificationShade = + + final boolean newShouldUseSplitNotificationShade = Utils.shouldUseSplitNotificationShade(mResources); + final boolean splitNotificationShadeChanged = + mShouldUseSplitNotificationShade != newShouldUseSplitNotificationShade; + + mShouldUseSplitNotificationShade = newShouldUseSplitNotificationShade; if (mQs != null) { mQs.setInSplitShade(mShouldUseSplitNotificationShade); } @@ -1188,6 +1193,10 @@ public class NotificationPanelViewController extends PanelViewController updateKeyguardStatusViewAlignment(/* animate= */false); mKeyguardMediaController.refreshMediaPosition(); + + if (splitNotificationShadeChanged) { + updateClockAppearance(); + } } private static void ensureAllViewsHaveIds(ViewGroup parentView) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewControllerTest.java index 479c27192c55f..9245c2ca9b67f 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewControllerTest.java @@ -904,6 +904,7 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { public void testSwitchesToCorrectClockInSplitShade() { mStatusBarStateController.setState(KEYGUARD); enableSplitShade(/* enabled= */ true); + clearInvocations(mKeyguardStatusViewController); when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(0); triggerPositionClockAndNotifications(); @@ -917,12 +918,57 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { .displayClock(SMALL, /* animate */ true); } + @Test + public void testHasNotifications_switchesToLargeClockWhenEnteringSplitShade() { + mStatusBarStateController.setState(KEYGUARD); + when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(1); + + enableSplitShade(/* enabled= */ true); + + verify(mKeyguardStatusViewController).displayClock(LARGE, /* animate */ true); + } + + @Test + public void testNoNotifications_switchesToLargeClockWhenEnteringSplitShade() { + mStatusBarStateController.setState(KEYGUARD); + when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(0); + + enableSplitShade(/* enabled= */ true); + + verify(mKeyguardStatusViewController).displayClock(LARGE, /* animate */ true); + } + + @Test + public void testHasNotifications_switchesToSmallClockWhenExitingSplitShade() { + mStatusBarStateController.setState(KEYGUARD); + enableSplitShade(/* enabled= */ true); + clearInvocations(mKeyguardStatusViewController); + when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(1); + + enableSplitShade(/* enabled= */ false); + + verify(mKeyguardStatusViewController).displayClock(SMALL, /* animate */ true); + } + + @Test + public void testNoNotifications_switchesToLargeClockWhenExitingSplitShade() { + mStatusBarStateController.setState(KEYGUARD); + enableSplitShade(/* enabled= */ true); + clearInvocations(mKeyguardStatusViewController); + when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(0); + + enableSplitShade(/* enabled= */ false); + + verify(mKeyguardStatusViewController).displayClock(LARGE, /* animate */ true); + } + @Test public void testSwitchesToBigClockInSplitShadeOnAod() { mStatusBarStateController.setState(KEYGUARD); enableSplitShade(/* enabled= */ true); when(mMediaDataManager.hasActiveMedia()).thenReturn(true); when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(2); + clearInvocations(mKeyguardStatusViewController); mNotificationPanelViewController.setDozing(true, false, null); @@ -934,6 +980,7 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { when(mScreenOffAnimationController.shouldAnimateClockChange()).thenReturn(false); mStatusBarStateController.setState(KEYGUARD); enableSplitShade(/* enabled= */ true); + clearInvocations(mKeyguardStatusViewController); when(mMediaDataManager.hasActiveMedia()).thenReturn(true); when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(2); @@ -946,6 +993,7 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { public void testDisplaysSmallClockOnLockscreenInSplitShadeWhenMediaIsPlaying() { mStatusBarStateController.setState(KEYGUARD); enableSplitShade(/* enabled= */ true); + clearInvocations(mKeyguardStatusViewController); when(mMediaDataManager.hasActiveMedia()).thenReturn(true); // one notification + media player visible