Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e9493353 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Merge cherrypicks of [16664218, 16664219, 16664220] into sc-v2-release.

Change-Id: I7e565a830c9e357a0a6fd78853e1d5a6fcf38a59
parents 5ce74ca4 38d57ffe
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -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);
        }
+24 −1
Original line number Diff line number Diff line
@@ -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) {
+61 −5
Original line number Diff line number Diff line
@@ -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);