From b750abc8c576e0f86a51a847b5e28938cec798db Mon Sep 17 00:00:00 2001 From: Selim Cinek Date: Tue, 2 Jun 2020 18:54:19 -0700 Subject: [PATCH] Fixed an issue where icons could be stuck overlapping The value of controlScreenOffAnimation could sometimes return false, and in that case we never reset the translation. Fixes: 136117476 Test: atest SystemUiTests Change-Id: Iea80c2fe6e982a299b8c2b10ae5d4983b60bef1c --- .../phone/NotificationIconAreaController.java | 3 +++ .../phone/NotificationIconAreaControllerTest.java | 13 ++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java index f58cce58af74d..76c51d61459a4 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java @@ -572,6 +572,9 @@ public class NotificationIconAreaController implements DarkReceiver, .setInterpolator(Interpolators.LINEAR) .setDuration(AOD_ICONS_APPEAR_DURATION) .start(); + } else { + mAodIcons.setAlpha(1.0f); + mAodIcons.setTranslationY(0); } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationIconAreaControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationIconAreaControllerTest.java index be43e19cfc70d..177e845bfeade 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationIconAreaControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationIconAreaControllerTest.java @@ -19,6 +19,7 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.testing.AndroidTestingRunner; @@ -56,6 +57,8 @@ public class NotificationIconAreaControllerTest extends SysuiTestCase { @Mock NotificationMediaManager mNotificationMediaManager; @Mock + NotificationIconContainer mNotificationIconContainer; + @Mock DozeParameters mDozeParameters; @Mock NotificationShadeWindowView mNotificationShadeWindowView; @@ -67,7 +70,7 @@ public class NotificationIconAreaControllerTest extends SysuiTestCase { when(mStatusBar.getNotificationShadeWindowView()).thenReturn(mNotificationShadeWindowView); when(mNotificationShadeWindowView.findViewById(anyInt())).thenReturn( - mock(NotificationIconContainer.class)); + mNotificationIconContainer); mController = new NotificationIconAreaController(mContext, mStatusBar, mStatusBarStateController, mWakeUpCoordinator, mKeyguardBypassController, @@ -87,4 +90,12 @@ public class NotificationIconAreaControllerTest extends SysuiTestCase { assertTrue(mController.shouldShouldLowPriorityIcons()); } + + @Test + public void testAppearResetsTranslation() { + when(mDozeParameters.shouldControlScreenOff()).thenReturn(false); + mController.appearAodIcons(); + verify(mNotificationIconContainer).setTranslationY(0); + verify(mNotificationIconContainer).setAlpha(1.0f); + } }