Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProvider.kt +3 −0 Original line number Diff line number Diff line package com.android.systemui.statusbar.notification.interruption import android.app.Notification import android.app.Notification.VISIBILITY_SECRET import android.content.BroadcastReceiver import android.content.Context import android.content.Intent Loading Loading @@ -172,6 +173,8 @@ private class KeyguardNotificationVisibilityProviderImpl @Inject constructor( !lockscreenUserManager.shouldShowLockscreenNotifications() -> true // User settings do not allow this notification on the lockscreen, so hide it. userSettingsDisallowNotification(entry) -> true // Entry is explicitly marked SECRET, so hide it. entry.sbn.notification.visibility == VISIBILITY_SECRET -> true // if entry is silent, apply custom logic to see if should hide shouldHideIfEntrySilent(entry) -> true else -> false Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProviderTest.java +49 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.systemui.statusbar.notification.interruption; import static android.app.Notification.VISIBILITY_PRIVATE; import static android.app.Notification.VISIBILITY_PUBLIC; import static android.app.Notification.VISIBILITY_SECRET; import static android.app.NotificationManager.IMPORTANCE_HIGH; Loading Loading @@ -448,6 +449,54 @@ public class KeyguardNotificationVisibilityProviderTest extends SysuiTestCase { assertFalse(mKeyguardNotificationVisibilityProvider.shouldHideNotification(mEntry)); } @Test public void notificationVisibilityPublic() { // GIVEN a VISIBILITY_PUBLIC notification NotificationEntryBuilder entryBuilder = new NotificationEntryBuilder() .setUser(new UserHandle(NOTIF_USER_ID)); entryBuilder.modifyNotification(mContext) .setVisibility(VISIBILITY_PUBLIC); mEntry = entryBuilder.build(); // WHEN we're in an 'unfiltered-keyguard-showing' state setupUnfilteredState(mEntry); // THEN don't hide the entry based on visibility. assertFalse(mKeyguardNotificationVisibilityProvider.shouldHideNotification(mEntry)); } @Test public void notificationVisibilityPrivate() { // GIVEN a VISIBILITY_PRIVATE notification NotificationEntryBuilder entryBuilder = new NotificationEntryBuilder() .setUser(new UserHandle(NOTIF_USER_ID)); entryBuilder.modifyNotification(mContext) .setVisibility(VISIBILITY_PRIVATE); mEntry = entryBuilder.build(); // WHEN we're in an 'unfiltered-keyguard-showing' state setupUnfilteredState(mEntry); // THEN don't hide the entry based on visibility. (Redaction is handled elsewhere.) assertFalse(mKeyguardNotificationVisibilityProvider.shouldHideNotification(mEntry)); } @Test public void notificationVisibilitySecret() { // GIVEN a VISIBILITY_SECRET notification NotificationEntryBuilder entryBuilder = new NotificationEntryBuilder() .setUser(new UserHandle(NOTIF_USER_ID)); entryBuilder.modifyNotification(mContext) .setVisibility(VISIBILITY_SECRET); mEntry = entryBuilder.build(); // WHEN we're in an 'unfiltered-keyguard-showing' state setupUnfilteredState(mEntry); // THEN hide the entry based on visibility. assertTrue(mKeyguardNotificationVisibilityProvider.shouldHideNotification(mEntry)); } @Test public void summaryExceedsThresholdToShow() { // GIVEN the notification doesn't exceed the threshold to show on the lockscreen Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProvider.kt +3 −0 Original line number Diff line number Diff line package com.android.systemui.statusbar.notification.interruption import android.app.Notification import android.app.Notification.VISIBILITY_SECRET import android.content.BroadcastReceiver import android.content.Context import android.content.Intent Loading Loading @@ -172,6 +173,8 @@ private class KeyguardNotificationVisibilityProviderImpl @Inject constructor( !lockscreenUserManager.shouldShowLockscreenNotifications() -> true // User settings do not allow this notification on the lockscreen, so hide it. userSettingsDisallowNotification(entry) -> true // Entry is explicitly marked SECRET, so hide it. entry.sbn.notification.visibility == VISIBILITY_SECRET -> true // if entry is silent, apply custom logic to see if should hide shouldHideIfEntrySilent(entry) -> true else -> false Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProviderTest.java +49 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.systemui.statusbar.notification.interruption; import static android.app.Notification.VISIBILITY_PRIVATE; import static android.app.Notification.VISIBILITY_PUBLIC; import static android.app.Notification.VISIBILITY_SECRET; import static android.app.NotificationManager.IMPORTANCE_HIGH; Loading Loading @@ -448,6 +449,54 @@ public class KeyguardNotificationVisibilityProviderTest extends SysuiTestCase { assertFalse(mKeyguardNotificationVisibilityProvider.shouldHideNotification(mEntry)); } @Test public void notificationVisibilityPublic() { // GIVEN a VISIBILITY_PUBLIC notification NotificationEntryBuilder entryBuilder = new NotificationEntryBuilder() .setUser(new UserHandle(NOTIF_USER_ID)); entryBuilder.modifyNotification(mContext) .setVisibility(VISIBILITY_PUBLIC); mEntry = entryBuilder.build(); // WHEN we're in an 'unfiltered-keyguard-showing' state setupUnfilteredState(mEntry); // THEN don't hide the entry based on visibility. assertFalse(mKeyguardNotificationVisibilityProvider.shouldHideNotification(mEntry)); } @Test public void notificationVisibilityPrivate() { // GIVEN a VISIBILITY_PRIVATE notification NotificationEntryBuilder entryBuilder = new NotificationEntryBuilder() .setUser(new UserHandle(NOTIF_USER_ID)); entryBuilder.modifyNotification(mContext) .setVisibility(VISIBILITY_PRIVATE); mEntry = entryBuilder.build(); // WHEN we're in an 'unfiltered-keyguard-showing' state setupUnfilteredState(mEntry); // THEN don't hide the entry based on visibility. (Redaction is handled elsewhere.) assertFalse(mKeyguardNotificationVisibilityProvider.shouldHideNotification(mEntry)); } @Test public void notificationVisibilitySecret() { // GIVEN a VISIBILITY_SECRET notification NotificationEntryBuilder entryBuilder = new NotificationEntryBuilder() .setUser(new UserHandle(NOTIF_USER_ID)); entryBuilder.modifyNotification(mContext) .setVisibility(VISIBILITY_SECRET); mEntry = entryBuilder.build(); // WHEN we're in an 'unfiltered-keyguard-showing' state setupUnfilteredState(mEntry); // THEN hide the entry based on visibility. assertTrue(mKeyguardNotificationVisibilityProvider.shouldHideNotification(mEntry)); } @Test public void summaryExceedsThresholdToShow() { // GIVEN the notification doesn't exceed the threshold to show on the lockscreen Loading