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

Commit 5932f31d authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Only collapse stack on shade state change" into tm-qpr-dev

parents 6c1d781c 091126fc
Loading
Loading
Loading
Loading
+6 −1
Original line number Original line Diff line number Diff line
@@ -475,8 +475,13 @@ public class BubbleController implements ConfigurationChangeListener {


    @VisibleForTesting
    @VisibleForTesting
    public void onStatusBarStateChanged(boolean isShade) {
    public void onStatusBarStateChanged(boolean isShade) {
        boolean didChange = mIsStatusBarShade != isShade;
        if (DEBUG_BUBBLE_CONTROLLER) {
            Log.d(TAG, "onStatusBarStateChanged isShade=" + isShade + " didChange=" + didChange);
        }
        mIsStatusBarShade = isShade;
        mIsStatusBarShade = isShade;
        if (!mIsStatusBarShade) {
        if (!mIsStatusBarShade && didChange) {
            // Only collapse stack on change
            collapseStack();
            collapseStack();
        }
        }


+17 −5
Original line number Original line Diff line number Diff line
@@ -301,7 +301,8 @@ public class NotificationTestHelper {
    public ExpandableNotificationRow createBubble()
    public ExpandableNotificationRow createBubble()
            throws Exception {
            throws Exception {
        Notification n = createNotification(false /* isGroupSummary */,
        Notification n = createNotification(false /* isGroupSummary */,
                null /* groupKey */, makeBubbleMetadata(null));
                null /* groupKey */,
                makeBubbleMetadata(null /* deleteIntent */, false /* autoExpand */));
        n.flags |= FLAG_BUBBLE;
        n.flags |= FLAG_BUBBLE;
        ExpandableNotificationRow row = generateRow(n, PKG, UID, USER_HANDLE,
        ExpandableNotificationRow row = generateRow(n, PKG, UID, USER_HANDLE,
                mDefaultInflationFlags, IMPORTANCE_HIGH);
                mDefaultInflationFlags, IMPORTANCE_HIGH);
@@ -334,7 +335,8 @@ public class NotificationTestHelper {
    public ExpandableNotificationRow createBubbleInGroup()
    public ExpandableNotificationRow createBubbleInGroup()
            throws Exception {
            throws Exception {
        Notification n = createNotification(false /* isGroupSummary */,
        Notification n = createNotification(false /* isGroupSummary */,
                GROUP_KEY /* groupKey */, makeBubbleMetadata(null));
                GROUP_KEY /* groupKey */,
                makeBubbleMetadata(null /* deleteIntent */, false /* autoExpand */));
        n.flags |= FLAG_BUBBLE;
        n.flags |= FLAG_BUBBLE;
        ExpandableNotificationRow row = generateRow(n, PKG, UID, USER_HANDLE,
        ExpandableNotificationRow row = generateRow(n, PKG, UID, USER_HANDLE,
                mDefaultInflationFlags, IMPORTANCE_HIGH);
                mDefaultInflationFlags, IMPORTANCE_HIGH);
@@ -350,7 +352,7 @@ public class NotificationTestHelper {
     * @param deleteIntent the intent to assign to {@link BubbleMetadata#deleteIntent}
     * @param deleteIntent the intent to assign to {@link BubbleMetadata#deleteIntent}
     */
     */
    public NotificationEntry createBubble(@Nullable PendingIntent deleteIntent) {
    public NotificationEntry createBubble(@Nullable PendingIntent deleteIntent) {
        return createBubble(makeBubbleMetadata(deleteIntent), USER_HANDLE);
        return createBubble(makeBubbleMetadata(deleteIntent, false /* autoExpand */), USER_HANDLE);
    }
    }


    /**
    /**
@@ -359,7 +361,16 @@ public class NotificationTestHelper {
     * @param handle the user to associate with this bubble.
     * @param handle the user to associate with this bubble.
     */
     */
    public NotificationEntry createBubble(UserHandle handle) {
    public NotificationEntry createBubble(UserHandle handle) {
        return createBubble(makeBubbleMetadata(null), handle);
        return createBubble(makeBubbleMetadata(null /* deleteIntent */, false /* autoExpand */),
                handle);
    }

    /**
     * Returns an {@link NotificationEntry} that should be shown as a auto-expanded bubble.
     */
    public NotificationEntry createAutoExpandedBubble() {
        return createBubble(makeBubbleMetadata(null /* deleteIntent */, true /* autoExpand */),
                USER_HANDLE);
    }
    }


    /**
    /**
@@ -567,7 +578,7 @@ public class NotificationTestHelper {
        assertTrue(countDownLatch.await(500, TimeUnit.MILLISECONDS));
        assertTrue(countDownLatch.await(500, TimeUnit.MILLISECONDS));
    }
    }


    private BubbleMetadata makeBubbleMetadata(PendingIntent deleteIntent) {
    private BubbleMetadata makeBubbleMetadata(PendingIntent deleteIntent, boolean autoExpand) {
        Intent target = new Intent(mContext, BubblesTestActivity.class);
        Intent target = new Intent(mContext, BubblesTestActivity.class);
        PendingIntent bubbleIntent = PendingIntent.getActivity(mContext, 0, target,
        PendingIntent bubbleIntent = PendingIntent.getActivity(mContext, 0, target,
                PendingIntent.FLAG_MUTABLE);
                PendingIntent.FLAG_MUTABLE);
@@ -576,6 +587,7 @@ public class NotificationTestHelper {
                        Icon.createWithResource(mContext, R.drawable.android))
                        Icon.createWithResource(mContext, R.drawable.android))
                .setDeleteIntent(deleteIntent)
                .setDeleteIntent(deleteIntent)
                .setDesiredHeight(314)
                .setDesiredHeight(314)
                .setAutoExpandBubble(autoExpand)
                .build();
                .build();
    }
    }


+31 −1
Original line number Original line Diff line number Diff line
@@ -1423,13 +1423,43 @@ public class BubblesTest extends SysuiTestCase {
        assertStackCollapsed();
        assertStackCollapsed();
        // Post status bar state change update with the same value
        // Post status bar state change update with the same value
        mBubbleController.onStatusBarStateChanged(false);
        mBubbleController.onStatusBarStateChanged(false);
        // Stack should remain collapsedb
        // Stack should remain collapsed
        assertStackCollapsed();
        assertStackCollapsed();
        // Post status bar state change which should trigger bubble to expand
        // Post status bar state change which should trigger bubble to expand
        mBubbleController.onStatusBarStateChanged(true);
        mBubbleController.onStatusBarStateChanged(true);
        assertStackExpanded();
        assertStackExpanded();
    }
    }


    /**
     * Test to verify behavior for the following scenario:
     * <ol>
     *     <li>device is locked with keyguard on, status bar shade state updates to
     *     <code>false</code></li>
     *     <li>notification entry is marked to be a bubble and it is set to auto-expand</li>
     *     <li>device unlock starts, status bar shade state receives another update to
     *     <code>false</code></li>
     *     <li>device is unlocked and status bar shade state is set to <code>true</code></li>
     *     <li>bubble should be expanded</li>
     * </ol>
     */
    @Test
    public void testOnStatusBarStateChanged_newAutoExpandedBubbleRemainsExpanded() {
        // Set device as locked
        mBubbleController.onStatusBarStateChanged(false);

        // Create a auto-expanded bubble
        NotificationEntry entry = mNotificationTestHelper.createAutoExpandedBubble();
        mEntryListener.onEntryAdded(entry);

        // When unlocking, we may receive duplicate updates with shade=false, ensure they don't
        // clear the expanded state
        mBubbleController.onStatusBarStateChanged(false);
        mBubbleController.onStatusBarStateChanged(true);

        // After unlocking, stack should be expanded
        assertStackExpanded();
    }

    @Test
    @Test
    public void testSetShouldAutoExpand_notifiesFlagChanged() {
    public void testSetShouldAutoExpand_notifiesFlagChanged() {
        mBubbleController.updateBubble(mBubbleEntry);
        mBubbleController.updateBubble(mBubbleEntry);