Refactor NotificationEntry utility methods
IDE extraction of notification visiblity methods into NotificationEntry
Bug: 324111564
Flag: N/A -- IDE tooling refactor only
Test: atest NotificationEntryTest
Test: atest NotificationLockscreenUserManagerTest
Change-Id: Ieaae2f9caf778f7ca90056bc7174fddc878a956d
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java
index 2a4753d..9916ef6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java
@@ -749,7 +749,7 @@
|| isNotifUserRedacted;
boolean notificationRequestsRedaction =
- ent.getSbn().getNotification().visibility == Notification.VISIBILITY_PRIVATE;
+ ent.isNotificationVisibilityPrivate();
boolean userForcesRedaction = packageHasVisibilityOverride(ent.getSbn().getKey());
if (keyguardPrivateNotifications()) {
@@ -767,9 +767,7 @@
}
NotificationEntry entry = mCommonNotifCollectionLazy.get().getEntry(key);
if (mFeatureFlags.isEnabled(Flags.NOTIF_LS_BACKGROUND_THREAD)) {
- return entry != null && entry.getRanking().getChannel() != null
- && entry.getRanking().getChannel().getLockscreenVisibility()
- == Notification.VISIBILITY_PRIVATE;
+ return entry != null && entry.isChannelVisibilityPrivate();
} else {
return entry != null
&& entry.getRanking().getLockscreenVisibilityOverride()
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java
index 8678f0a..e111525 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java
@@ -998,6 +998,23 @@
return style == null ? "nostyle" : style.getSimpleName();
}
+ /**
+ * Return {@code true} if notification's visibility is {@link Notification.VISIBILITY_PRIVATE}
+ */
+ public boolean isNotificationVisibilityPrivate() {
+ return getSbn().getNotification().visibility == Notification.VISIBILITY_PRIVATE;
+ }
+
+ /**
+ * Return {@code true} if notification's channel lockscreen visibility is
+ * {@link Notification.VISIBILITY_PRIVATE}
+ */
+ public boolean isChannelVisibilityPrivate() {
+ return getRanking().getChannel() != null
+ && getRanking().getChannel().getLockscreenVisibility()
+ == Notification.VISIBILITY_PRIVATE;
+ }
+
/** Information about a suggestion that is being edited. */
public static class EditedSuggestionInfo {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotificationEntryTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotificationEntryTest.java
index ccc9dc0..8a48fe1 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotificationEntryTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotificationEntryTest.java
@@ -50,8 +50,8 @@
import androidx.test.filters.SmallTest;
-import com.android.systemui.res.R;
import com.android.systemui.SysuiTestCase;
+import com.android.systemui.res.R;
import com.android.systemui.statusbar.RankingBuilder;
import com.android.systemui.statusbar.SbnBuilder;
import com.android.systemui.util.time.FakeSystemClock;
@@ -280,6 +280,66 @@
}
@Test
+ public void testIsNotificationVisibilityPrivate_true() {
+ assertTrue(mEntry.isNotificationVisibilityPrivate());
+ }
+
+ @Test
+ public void testIsNotificationVisibilityPrivate_visibilityPublic_false() {
+ Notification.Builder notification = new Notification.Builder(mContext, "")
+ .setVisibility(Notification.VISIBILITY_PUBLIC)
+ .setSmallIcon(R.drawable.ic_person)
+ .setContentTitle("Title")
+ .setContentText("Text");
+
+ NotificationEntry entry = new NotificationEntryBuilder()
+ .setPkg(TEST_PACKAGE_NAME)
+ .setOpPkg(TEST_PACKAGE_NAME)
+ .setUid(TEST_UID)
+ .setChannel(mChannel)
+ .setId(mId++)
+ .setNotification(notification.build())
+ .setUser(new UserHandle(ActivityManager.getCurrentUser()))
+ .build();
+
+ assertFalse(entry.isNotificationVisibilityPrivate());
+ }
+
+ @Test
+ public void testIsChannelVisibilityPrivate_true() {
+ assertTrue(mEntry.isChannelVisibilityPrivate());
+ }
+
+ @Test
+ public void testIsChannelVisibilityPrivate_visibilityPublic_false() {
+ NotificationChannel channel =
+ new NotificationChannel("id", "name", NotificationChannel.USER_LOCKED_IMPORTANCE);
+ channel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);
+ StatusBarNotification sbn = new SbnBuilder().build();
+ Ranking ranking = new RankingBuilder()
+ .setChannel(channel)
+ .setKey(sbn.getKey())
+ .build();
+ NotificationEntry entry =
+ new NotificationEntry(sbn, ranking, mClock.uptimeMillis());
+
+ assertFalse(entry.isChannelVisibilityPrivate());
+ }
+
+ @Test
+ public void testIsChannelVisibilityPrivate_entryHasNoChannel_false() {
+ StatusBarNotification sbn = new SbnBuilder().build();
+ Ranking ranking = new RankingBuilder()
+ .setChannel(null)
+ .setKey(sbn.getKey())
+ .build();
+ NotificationEntry entry =
+ new NotificationEntry(sbn, ranking, mClock.uptimeMillis());
+
+ assertFalse(entry.isChannelVisibilityPrivate());
+ }
+
+ @Test
public void notificationDataEntry_testIsLastMessageFromReply() {
Person.Builder person = new Person.Builder()
.setName("name")