Merge cherrypicks of [16664218, 16664219, 16664220] into sc-v2-release.
Change-Id: I7e565a830c9e357a0a6fd78853e1d5a6fcf38a59
This commit is contained in:
@@ -384,9 +384,9 @@ public class NotificationGroupManagerLegacy implements
|
||||
// * Only necessary when all notifications in the group use GROUP_ALERT_SUMMARY
|
||||
// * Only necessary when at least one notification in the group is on a priority channel
|
||||
if (group.summary.getSbn().getNotification().getGroupAlertBehavior()
|
||||
!= Notification.GROUP_ALERT_SUMMARY) {
|
||||
== Notification.GROUP_ALERT_CHILDREN) {
|
||||
if (SPEW) {
|
||||
Log.d(TAG, "getPriorityConversationAlertOverride: summary != GROUP_ALERT_SUMMARY");
|
||||
Log.d(TAG, "getPriorityConversationAlertOverride: summary == GROUP_ALERT_CHILDREN");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@@ -529,8 +529,10 @@ public class NotificationGroupManagerLegacy implements
|
||||
mIsolatedEntries.put(entry.getKey(), entry.getSbn());
|
||||
if (groupKeysChanged) {
|
||||
updateSuppression(mGroupMap.get(oldGroupKey));
|
||||
updateSuppression(mGroupMap.get(newGroupKey));
|
||||
}
|
||||
// Always update the suppression of the group from which you're isolated, in case
|
||||
// this entry was or now is the alertOverride for that group.
|
||||
updateSuppression(mGroupMap.get(newGroupKey));
|
||||
} else if (!wasGroupChild && isGroupChild) {
|
||||
onEntryBecomingChild(entry);
|
||||
}
|
||||
|
||||
@@ -130,6 +130,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
|
||||
|
||||
public static final float BACKGROUND_ALPHA_DIMMED = 0.7f;
|
||||
private static final String TAG = "StackScroller";
|
||||
private static final boolean SPEW = Log.isLoggable(TAG, Log.VERBOSE);
|
||||
|
||||
// Usage:
|
||||
// adb shell setprop persist.debug.nssl true && adb reboot
|
||||
@@ -3156,6 +3157,13 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
|
||||
AnimationEvent event = new AnimationEvent(row, type);
|
||||
event.headsUpFromBottom = onBottom;
|
||||
mAnimationEvents.add(event);
|
||||
if (SPEW) {
|
||||
Log.v(TAG, "Generating HUN animation event: "
|
||||
+ " isHeadsUp=" + isHeadsUp
|
||||
+ " type=" + type
|
||||
+ " onBottom=" + onBottom
|
||||
+ " row=" + row.getEntry().getKey());
|
||||
}
|
||||
}
|
||||
mHeadsUpChangeAnimations.clear();
|
||||
mAddedHeadsUpChildren.clear();
|
||||
@@ -4679,7 +4687,22 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
|
||||
|
||||
@ShadeViewRefactor(RefactorComponent.STATE_RESOLVER)
|
||||
public void generateHeadsUpAnimation(ExpandableNotificationRow row, boolean isHeadsUp) {
|
||||
if (mAnimationsEnabled && (isHeadsUp || mHeadsUpGoingAwayAnimationsAllowed)) {
|
||||
final boolean add = mAnimationsEnabled && (isHeadsUp || mHeadsUpGoingAwayAnimationsAllowed);
|
||||
if (SPEW) {
|
||||
Log.v(TAG, "generateHeadsUpAnimation:"
|
||||
+ " willAdd=" + add
|
||||
+ " isHeadsUp=" + isHeadsUp
|
||||
+ " row=" + row.getEntry().getKey());
|
||||
}
|
||||
if (add) {
|
||||
// If we're hiding a HUN we just started showing THIS FRAME, then remove that event,
|
||||
// and do not add the disappear event either.
|
||||
if (!isHeadsUp && mHeadsUpChangeAnimations.remove(new Pair<>(row, true))) {
|
||||
if (SPEW) {
|
||||
Log.v(TAG, "generateHeadsUpAnimation: previous hun appear animation cancelled");
|
||||
}
|
||||
return;
|
||||
}
|
||||
mHeadsUpChangeAnimations.add(new Pair<>(row, isHeadsUp));
|
||||
mNeedsAnimation = true;
|
||||
if (!mIsExpanded && !mWillExpand && !isHeadsUp) {
|
||||
|
||||
@@ -177,21 +177,69 @@ public class NotificationGroupManagerLegacyTest extends SysuiTestCase {
|
||||
helpTestAlertOverrideWithSiblings(2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper for testing various sibling counts
|
||||
*/
|
||||
private void helpTestAlertOverrideWithSiblings(int numSiblings) {
|
||||
helpTestAlertOverride(
|
||||
/* numSiblings */ numSiblings,
|
||||
/* summaryAlert */ Notification.GROUP_ALERT_SUMMARY,
|
||||
/* childAlert */ Notification.GROUP_ALERT_SUMMARY,
|
||||
/* siblingAlert */ Notification.GROUP_ALERT_SUMMARY,
|
||||
/* expectAlertOverride */ true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAlertOverrideWithParentAlertAll() {
|
||||
// tests that summary can have GROUP_ALERT_ALL and this still works
|
||||
helpTestAlertOverride(
|
||||
/* numSiblings */ 1,
|
||||
/* summaryAlert */ Notification.GROUP_ALERT_ALL,
|
||||
/* childAlert */ Notification.GROUP_ALERT_SUMMARY,
|
||||
/* siblingAlert */ Notification.GROUP_ALERT_SUMMARY,
|
||||
/* expectAlertOverride */ true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAlertOverrideWithParentAlertChild() {
|
||||
// Tests that if the summary alerts CHILDREN, there's no alertOverride
|
||||
helpTestAlertOverride(
|
||||
/* numSiblings */ 1,
|
||||
/* summaryAlert */ Notification.GROUP_ALERT_CHILDREN,
|
||||
/* childAlert */ Notification.GROUP_ALERT_SUMMARY,
|
||||
/* siblingAlert */ Notification.GROUP_ALERT_SUMMARY,
|
||||
/* expectAlertOverride */ false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAlertOverrideWithChildrenAlertAll() {
|
||||
// Tests that if the children alert ALL, there's no alertOverride
|
||||
helpTestAlertOverride(
|
||||
/* numSiblings */ 1,
|
||||
/* summaryAlert */ Notification.GROUP_ALERT_SUMMARY,
|
||||
/* childAlert */ Notification.GROUP_ALERT_ALL,
|
||||
/* siblingAlert */ Notification.GROUP_ALERT_ALL,
|
||||
/* expectAlertOverride */ false);
|
||||
}
|
||||
|
||||
/**
|
||||
* This tests, for a group with a priority entry and the given number of siblings, that:
|
||||
* 1) the priority entry is identified as the alertOverride for the group
|
||||
* 2) the onAlertOverrideChanged method is called at that time
|
||||
* 3) when the priority entry is removed, these are reversed
|
||||
*/
|
||||
private void helpTestAlertOverrideWithSiblings(int numSiblings) {
|
||||
int groupAlert = Notification.GROUP_ALERT_SUMMARY;
|
||||
private void helpTestAlertOverride(int numSiblings,
|
||||
@Notification.GroupAlertBehavior int summaryAlert,
|
||||
@Notification.GroupAlertBehavior int childAlert,
|
||||
@Notification.GroupAlertBehavior int siblingAlert,
|
||||
boolean expectAlertOverride) {
|
||||
// Create entries in an order so that the priority entry can be deemed the newest child.
|
||||
NotificationEntry[] siblings = new NotificationEntry[numSiblings];
|
||||
for (int i = 0; i < numSiblings; i++) {
|
||||
siblings[i] = mGroupTestHelper.createChildNotification(groupAlert);
|
||||
siblings[i] = mGroupTestHelper.createChildNotification(siblingAlert);
|
||||
}
|
||||
NotificationEntry priorityEntry = mGroupTestHelper.createChildNotification(groupAlert);
|
||||
NotificationEntry summaryEntry = mGroupTestHelper.createSummaryNotification(groupAlert);
|
||||
NotificationEntry priorityEntry = mGroupTestHelper.createChildNotification(childAlert);
|
||||
NotificationEntry summaryEntry = mGroupTestHelper.createSummaryNotification(summaryAlert);
|
||||
|
||||
// The priority entry is an important conversation.
|
||||
when(mPeopleNotificationIdentifier.getPeopleNotificationType(eq(priorityEntry)))
|
||||
@@ -208,6 +256,14 @@ public class NotificationGroupManagerLegacyTest extends SysuiTestCase {
|
||||
}
|
||||
mGroupManager.onEntryAdded(priorityEntry);
|
||||
|
||||
if (!expectAlertOverride) {
|
||||
// Test expectation is that there will NOT be an alert, so verify that!
|
||||
NotificationGroup summaryGroup =
|
||||
mGroupManager.getGroupForSummary(summaryEntry.getSbn());
|
||||
assertNull(summaryGroup.alertOverride);
|
||||
return;
|
||||
}
|
||||
|
||||
// Verify that the summary group has the priority child as its alertOverride
|
||||
NotificationGroup summaryGroup = mGroupManager.getGroupForSummary(summaryEntry.getSbn());
|
||||
assertEquals(priorityEntry, summaryGroup.alertOverride);
|
||||
|
||||
Reference in New Issue
Block a user