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
This commit is contained in:
Jeff DeCew
2021-11-24 03:48:33 +00:00
parent c273e395e2
commit 2234aaedb6
5 changed files with 18 additions and 6 deletions

View File

@@ -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()));
}
}
}

View File

@@ -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);
}

View File

@@ -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);
}
}

View File

@@ -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);
}

View File

@@ -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