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

Commit 042fb825 authored by Jeff DeCew's avatar Jeff DeCew
Browse files

Fix lockscreen notification + media counting.

Background: A regression was introduced when something about the MediaHeaderView's visibility was changed, which caused that view to be counted when showing notifications but not when counting how many should be shown.  That regression caused b/188000471 which was fixed by ag/I93b4b6039eb812619787744f893fe1924e1afc4d.  However, that fix only addressed half the problem, as it resulted in the media player always being shown, regardless of the hard-coded notification max.

This change brings the logic of these two methods in line with each other, so that the number of notifications shown *includes* the media player, but ensures that a zero-heignt media player is not treated as a notification (similar to how any GONE views are ignored).

Fixes: 189102584
Test: manual
Change-Id: Ic7447941593f08ed504f3870af5a72d2628a043e
parent e054e544
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -2097,11 +2097,13 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
                if (height != 0) {
                    height += mPaddingBetweenElements;
                }
                height += calculateGapHeight(previousView, expandableView, numShownItems);
                float gapHeight = calculateGapHeight(previousView, expandableView, numShownNotifs);
                height += gapHeight;
                height += viewHeight;

                numShownItems++;
                if (!(expandableView instanceof MediaHeaderView)) {
                if (viewHeight > 0 || !(expandableView instanceof MediaHeaderView)) {
                    // Only count the media as a notification if it has a positive height.
                    numShownNotifs++;
                }
                previousView = expandableView;
+22 −15
Original line number Diff line number Diff line
@@ -139,6 +139,7 @@ import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
import com.android.systemui.statusbar.notification.row.ExpandableView;
import com.android.systemui.statusbar.notification.stack.AmbientState;
import com.android.systemui.statusbar.notification.stack.AnimationProperties;
import com.android.systemui.statusbar.notification.stack.MediaHeaderView;
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout;
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController;
import com.android.systemui.statusbar.notification.stack.StackStateAnimator;
@@ -1329,14 +1330,10 @@ public class NotificationPanelViewController extends PanelViewController {
        ExpandableView previousView = null;
        for (int i = 0; i < mNotificationStackScrollLayoutController.getChildCount(); i++) {
            ExpandableView child = mNotificationStackScrollLayoutController.getChildAt(i);
            if (!(child instanceof ExpandableNotificationRow)) {
                continue;
            }
            if (child instanceof ExpandableNotificationRow) {
                ExpandableNotificationRow row = (ExpandableNotificationRow) child;
            boolean
                    suppressedSummary =
                    mGroupManager != null && mGroupManager.isSummaryOfSuppressedGroup(
                            row.getEntry().getSbn());
                boolean suppressedSummary = mGroupManager != null
                        && mGroupManager.isSummaryOfSuppressedGroup(row.getEntry().getSbn());
                if (suppressedSummary) {
                    continue;
                }
@@ -1346,6 +1343,16 @@ public class NotificationPanelViewController extends PanelViewController {
                if (row.isRemoved()) {
                    continue;
                }
            } else if (child instanceof MediaHeaderView) {
                if (child.getVisibility() == GONE) {
                    continue;
                }
                if (child.getIntrinsicHeight() == 0) {
                    continue;
                }
            } else {
                continue;
            }
            availableSpace -= child.getMinHeight(true /* ignoreTemporaryStates */);
            availableSpace -= count == 0 ? 0 : notificationPadding;
            availableSpace -= mNotificationStackScrollLayoutController