Be more lenient when processing group headers

We are now only looking at the contracted header instead of all
sorts of headers and if the current header is null, we don't
look any further but consider it to be equal.

Bug: 62378776
Test: add notification groups with multiple headers, observe correct icon / text behavior
Change-Id: I0b83b91caaace30df3bdcba7225e93bd0e195484
This commit is contained in:
Selim Cinek
2017-06-29 10:28:17 +02:00
parent d43bc31eb7
commit b26afa3e94
3 changed files with 24 additions and 2 deletions

View File

@@ -756,6 +756,19 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
return getShowingLayout().getVisibleNotificationHeader();
}
/**
* @return the contracted notification header. This can be different from
* {@link #getNotificationHeader()} and also {@link #getVisibleNotificationHeader()} and only
* returns the contracted version.
*/
public NotificationHeaderView getContractedNotificationHeader() {
if (mIsSummaryWithChildren) {
return mChildrenContainer.getHeaderView();
}
return mPrivateLayout.getContractedNotificationHeader();
}
public void setOnExpandClickListener(OnExpandClickListener onExpandClickListener) {
mOnExpandClickListener = onExpandClickListener;
}

View File

@@ -1308,6 +1308,14 @@ public class NotificationContentView extends FrameLayout {
return header;
}
public NotificationHeaderView getContractedNotificationHeader() {
if (mContractedChild != null) {
return mContractedWrapper.getNotificationHeader();
}
return null;
}
public NotificationHeaderView getVisibleNotificationHeader() {
NotificationViewWrapper wrapper = getVisibleWrapper(mVisibleType);
return wrapper == null ? null : wrapper.getNotificationHeader();

View File

@@ -267,9 +267,10 @@ public class NotificationHeaderUtil {
if (!mApply) {
return;
}
NotificationHeaderView header = row.getNotificationHeader();
NotificationHeaderView header = row.getContractedNotificationHeader();
if (header == null) {
mApply = false;
// No header found. We still consider this to be the same to avoid weird flickering
// when for example showing an undo notification
return;
}
Object childData = mExtractor == null ? null : mExtractor.extractData(row);