diff options
2 files changed, 21 insertions, 3 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationChildrenContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationChildrenContainer.java index 0dbd1d6cc74a..ff06b5b33a05 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationChildrenContainer.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationChildrenContainer.java @@ -300,7 +300,7 @@ public class NotificationChildrenContainer extends ViewGroup { mNotificationHeaderWrapper.notifyContentUpdated(mContainingNotification); recreateLowPriorityHeader(builder); recreateAmbientHeader(builder); - resetHeaderVisibilityIfNeeded(mNotificationHeader, calculateDesiredHeader()); + updateHeaderVisibility(false /* animate */); updateChildrenHeaderAppearance(); } @@ -833,6 +833,11 @@ public class NotificationChildrenContainer extends ViewGroup { return mNotificationHeaderLowPriority; } + @VisibleForTesting + public ViewGroup getCurrentHeaderView() { + return mCurrentHeader; + } + public void notifyShowAmbientChanged() { updateHeaderVisibility(false); } @@ -869,7 +874,12 @@ public class NotificationChildrenContainer extends ViewGroup { desiredHeader.setVisibility(VISIBLE); } if (currentHeader != null) { - getWrapperForView(currentHeader).setVisible(false); + // Wrapper can be null if we were a low priority notification + // and just destroyed it by calling setIsLowPriority(false) + NotificationViewWrapper wrapper = getWrapperForView(currentHeader); + if (wrapper != null) { + wrapper.setVisible(false); + } currentHeader.setVisibility(INVISIBLE); } } @@ -878,7 +888,7 @@ public class NotificationChildrenContainer extends ViewGroup { resetHeaderVisibilityIfNeeded(mNotificationHeaderAmbient, desiredHeader); resetHeaderVisibilityIfNeeded(mNotificationHeaderLowPriority, desiredHeader); - mCurrentHeader = currentHeader; + mCurrentHeader = desiredHeader; } private void resetHeaderVisibilityIfNeeded(View header, View desiredHeader) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/stack/NotificationChildrenContainerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/stack/NotificationChildrenContainerTest.java index e6c8815b9e21..2dd96b686996 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/stack/NotificationChildrenContainerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/stack/NotificationChildrenContainerTest.java @@ -60,4 +60,12 @@ public class NotificationChildrenContainerTest extends SysuiTestCase { Assert.assertTrue(lowPriorityHeaderView.getParent() == null); Assert.assertTrue(childrenContainer.getLowPriorityHeaderView() == null); } + + @Test + public void testRecreateNotificationHeader_hasHeader() { + NotificationChildrenContainer childrenContainer = mGroup.getChildrenContainer(); + childrenContainer.recreateNotificationHeader(null); + Assert.assertNotNull("Children container must have a header after recreation", + childrenContainer.getCurrentHeaderView()); + } } |