commit | 14ec8fe56c996be4f9f104ebf14593631693e931 | [log] [tgz] |
---|---|---|
author | Julia Reynolds <juliacr@google.com> | Wed Feb 07 09:29:32 2024 -0500 |
committer | Julia Reynolds <juliacr@google.com> | Wed Feb 07 09:29:32 2024 -0500 |
tree | 22d4ab6965c2067fa2f98a076f337d308c330168 | |
parent | 8bfdef2a60082afced9f3405563fe930c6ec835c [diff] |
Add protective null check For tests and possibly rare race conditions Test: KeyguardNotificationVisibilityProviderTest Fixes: 324014574 Change-Id: Ib87b90dd2a5df6404b315071b02c601ad7bda8b6
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProvider.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProvider.kt index aca8b64..d7fe36f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProvider.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProvider.kt
@@ -223,7 +223,8 @@ // ranking.lockscreenVisibilityOverride contains possibly out of date DPC and Setting // info, and NotificationLockscreenUserManagerImpl is already listening for updates // to those - entry.ranking.channel.lockscreenVisibility == VISIBILITY_SECRET + entry.ranking.channel != null && entry.ranking.channel.lockscreenVisibility == + VISIBILITY_SECRET } else { entry.ranking.lockscreenVisibilityOverride == VISIBILITY_SECRET }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProviderTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProviderTest.java index b922ab3..3811f04 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProviderTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProviderTest.java
@@ -472,6 +472,23 @@ } @Test + public void publicMode_nullChannel_allowed() { + mFeatureFlags.set(Flags.NOTIF_LS_BACKGROUND_THREAD, true); + // GIVEN an 'unfiltered-keyguard-showing' state + setupUnfilteredState(mEntry); + + // WHEN the notification's user is in public mode and settings are configured to disallow + // notifications in public mode + when(mLockscreenUserManager.isLockscreenPublicMode(CURR_USER_ID)).thenReturn(true); + mEntry.setRanking(new RankingBuilder() + .setKey(mEntry.getKey()) + .setVisibilityOverride(VISIBILITY_SECRET).build()); + + // THEN allow the entry + assertFalse(mKeyguardNotificationVisibilityProvider.shouldHideNotification(mEntry)); + } + + @Test public void publicMode_notifDisallowed() { mFeatureFlags.set(Flags.NOTIF_LS_BACKGROUND_THREAD, true); NotificationChannel channel = new NotificationChannel("1", "1", IMPORTANCE_HIGH);