summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationChildrenContainer.java16
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/stack/NotificationChildrenContainerTest.java8
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());
+ }
}