Fix isExpanded behavior for sensitive notifications

ENR#isExpanded returns true for sensitive notifications when the state is not shade.
Expected behavior for isExpanded method for this case  is to return false.

In order to achieve this, we return false in isExpanded for sensitive notifications when the system set setHideSensitive true.
Bug: 275457408
Test: atest ExpandableNotificationRowTest

Change-Id: I8509e910dc0ce2e7b3796c5682bc6949dfa87b6b
This commit is contained in:
Ibrahim Yilmaz
2023-05-19 17:08:42 +00:00
parent 91821672fa
commit c4f298c72c
2 changed files with 38 additions and 1 deletions

View File

@@ -2673,7 +2673,12 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
}
public boolean isExpanded(boolean allowOnKeyguard) {
return (!mOnKeyguard || allowOnKeyguard)
if (DEBUG) {
if (!mShowingPublicInitialized && !allowOnKeyguard) {
Log.d(TAG, "mShowingPublic is not initialized.");
}
}
return !mShowingPublic && (!mOnKeyguard || allowOnKeyguard)
&& (!hasUserChangedExpansion() && (isSystemExpanded() || isSystemChildExpanded())
|| isUserExpanded());
}
@@ -3620,6 +3625,8 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
pw.print(", mOnUserInteractionCallback null: " + (mOnUserInteractionCallback == null));
pw.print(", removed: " + isRemoved());
pw.print(", expandAnimationRunning: " + mExpandAnimationRunning);
pw.print(", mShowingPublic: " + mShowingPublic);
pw.print(", mShowingPublicInitialized: " + mShowingPublicInitialized);
NotificationContentView showingLayout = getShowingLayout();
pw.print(", privateShowing: " + (showingLayout == mPrivateLayout));
pw.println();

View File

@@ -733,6 +733,36 @@ public class ExpandableNotificationRowTest extends SysuiTestCase {
verify(lowPriVectorDrawable, times(1)).start();
}
@Test
public void isExpanded_hideSensitive_sensitiveNotExpanded()
throws Exception {
// GIVEN
final ExpandableNotificationRow row = mNotificationTestHelper.createRow();
row.setUserExpanded(true);
row.setOnKeyguard(false);
row.setSensitive(/* sensitive= */true, /* hideSensitive= */false);
row.setHideSensitive(/* hideSensitive= */true, /* animated= */false,
/* delay= */0L, /* duration= */0L);
// THEN
assertThat(row.isExpanded()).isFalse();
}
@Test
public void isExpanded_hideSensitive_nonSensitiveExpanded()
throws Exception {
// GIVEN
final ExpandableNotificationRow row = mNotificationTestHelper.createRow();
row.setUserExpanded(true);
row.setOnKeyguard(false);
row.setSensitive(/* sensitive= */true, /* hideSensitive= */false);
row.setHideSensitive(/* hideSensitive= */false, /* animated= */false,
/* delay= */0L, /* duration= */0L);
// THEN
assertThat(row.isExpanded()).isTrue();
}
private void setDrawableIconsInImageView(CachingIconView icon, Drawable iconDrawable,
Drawable rightIconDrawable) {
ImageView iconView = mock(ImageView.class);