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:
@@ -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()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user