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

Commit 2234aaed authored by Jeff DeCew's avatar Jeff DeCew
Browse files

New Pipeline: Numerous bug and crash fixes:

* Fix RemoteInputView crash by no longer clearing the row.  This was never done in the legacy pipeline, and the number of components in the system which apparently depend on this terrible beahavior seems to be all of them.
* Fix ConcurrentModificationException in GroupExpansionManagerImpl due to iterating over the expanded groups to remove them.
* Improve the ListDumper to also include the group's summary
* Fix the ENR.addChildAt NodeController method to actually use the index
* Expand the ensureRemovedFromTransientContainer() logic to apply to all expandable views, not just section headers.

Fixes: 205097513
Test: manual
Change-Id: I996a2d6e7f09653afc960e859db6ae72beeb04b0
parent c273e395
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -55,15 +55,26 @@ public class ListDumper {
                    interactionTracker.hasUserInteractedWith(entry.getKey()));
            if (entry instanceof GroupEntry) {
                GroupEntry ge = (GroupEntry) entry;
                NotificationEntry summary = ge.getSummary();
                if (summary != null) {
                    dumpEntry(summary,
                            topEntryIndex + ":*",
                            childEntryIndent,
                            sb,
                            true,
                            includeRecordKeeping,
                            interactionTracker.hasUserInteractedWith(summary.getKey()));
                }
                List<NotificationEntry> children = ge.getChildren();
                for (int childIndex = 0;  childIndex < children.size(); childIndex++) {
                    dumpEntry(children.get(childIndex),
                    NotificationEntry child = children.get(childIndex);
                    dumpEntry(child,
                            topEntryIndex + "." + childIndex,
                            childEntryIndent,
                            sb,
                            true,
                            includeRecordKeeping,
                            interactionTracker.hasUserInteractedWith(entry.getKey()));
                            interactionTracker.hasUserInteractedWith(child.getKey()));
                }
            }
        }
+1 −1
Original line number Diff line number Diff line
@@ -373,7 +373,7 @@ public class PreparationCoordinator implements Coordinator {

    private void freeNotifViews(NotificationEntry entry) {
        mViewBarn.removeViewForEntry(entry);
        entry.setRow(null);
        // TODO: clear the entry's row here, or even better, stop setting the row on the entry!
        mInflationStates.put(entry, STATE_UNINFLATED);
    }

+2 −1
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import com.android.systemui.statusbar.notification.collection.listbuilder.OnBefo

import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;

@@ -91,7 +92,7 @@ public class GroupExpansionManagerImpl implements GroupExpansionManager, Coordin

    @Override
    public void collapseGroups() {
        for (NotificationEntry entry : mExpandedGroups) {
        for (NotificationEntry entry : new ArrayList<>(mExpandedGroups)) {
            setGroupExpanded(entry, false);
        }
    }
+1 −1
Original line number Diff line number Diff line
@@ -241,7 +241,7 @@ public class ExpandableNotificationRowController implements NodeController {
    public void addChildAt(NodeController child, int index) {
        ExpandableNotificationRow childView = (ExpandableNotificationRow) child.getView();

        mView.addChildNotification((ExpandableNotificationRow) child.getView());
        mView.addChildNotification((ExpandableNotificationRow) child.getView(), index);
        mListContainer.notifyGroupChildAdded(childView);
    }

+1 −1
Original line number Diff line number Diff line
@@ -4642,7 +4642,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
    }

    private void ensureRemovedFromTransientContainer(View v) {
        if (v.getParent() == this && v instanceof SectionHeaderView) {
        if (v.getParent() == this && v instanceof ExpandableView) {
            ExpandableView expandableView = (ExpandableView) v;
            ViewGroup transientContainer = expandableView.getTransientContainer();
            // If the child is animating away, it will still have a parent, so