From b9d088b9021fa5521c92472bc02f6fd80bf76132 Mon Sep 17 00:00:00 2001 From: Selim Cinek Date: Mon, 17 May 2021 22:01:28 +0200 Subject: Fixed the logic when dynamic privacy is enabled It previously was enabled whenever we were not hiding lockscreen notifications (most often). We're now hiding it only when hiding private notification content, which was always the goal. This lead to an issue where Clear all was visible. Fixes: 160709466 Test: atest SystemUITests Change-Id: Id4f4d598d88c4527abdae9fab025db52c8e8f4c2 --- .../notification/DynamicPrivacyController.java | 7 ++++-- .../notification/DynamicPrivacyControllerTest.java | 25 ++++++++++++++++++++-- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/DynamicPrivacyController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/DynamicPrivacyController.java index 9482c17a8769..a0ccd5726c75 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/DynamicPrivacyController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/DynamicPrivacyController.java @@ -19,6 +19,8 @@ package com.android.systemui.statusbar.notification; import android.annotation.Nullable; import android.util.ArraySet; +import androidx.annotation.VisibleForTesting; + import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.NotificationLockscreenUserManager; @@ -76,8 +78,9 @@ public class DynamicPrivacyController implements KeyguardStateController.Callbac } } - private boolean isDynamicPrivacyEnabled() { - return !mLockscreenUserManager.shouldHideNotifications( + @VisibleForTesting + boolean isDynamicPrivacyEnabled() { + return !mLockscreenUserManager.userAllowsPrivateNotificationsInPublic( mLockscreenUserManager.getCurrentUserId()); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/DynamicPrivacyControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/DynamicPrivacyControllerTest.java index 68cf66dfb700..7d06abf5cd67 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/DynamicPrivacyControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/DynamicPrivacyControllerTest.java @@ -16,6 +16,8 @@ package com.android.systemui.statusbar.notification; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.mock; @@ -60,13 +62,15 @@ public class DynamicPrivacyControllerTest extends SysuiTestCase { mDynamicPrivacyController.setStatusBarKeyguardViewManager( mock(StatusBarKeyguardViewManager.class)); mDynamicPrivacyController.addListener(mListener); + // Disable dynamic privacy by default + allowPrivateNotificationsInPublic(true); } @Test public void testDynamicFalseWhenCannotSkipBouncer() { enableDynamicPrivacy(); when(mKeyguardStateController.canDismissLockScreen()).thenReturn(false); - Assert.assertFalse("can't skip bouncer but is dynamically unlocked", + assertFalse("can't skip bouncer but is dynamically unlocked", mDynamicPrivacyController.isDynamicallyUnlocked()); } @@ -102,9 +106,26 @@ public class DynamicPrivacyControllerTest extends SysuiTestCase { verify(mListener).onDynamicPrivacyChanged(); } - private void enableDynamicPrivacy() { + @Test + public void dynamicPrivacyOnlyWhenHidingPrivate() { + // Verify that when only hiding notifications, this isn't enabled + allowPrivateNotificationsInPublic(true); when(mLockScreenUserManager.shouldHideNotifications(any())).thenReturn( false); + assertFalse("Dynamic privacy shouldn't be enabled when only hiding notifications", + mDynamicPrivacyController.isDynamicPrivacyEnabled()); + allowPrivateNotificationsInPublic(false); + assertTrue("Should be enabled when hiding notification contents", + mDynamicPrivacyController.isDynamicPrivacyEnabled()); + } + + private void enableDynamicPrivacy() { + allowPrivateNotificationsInPublic(false); + } + + private void allowPrivateNotificationsInPublic(boolean allow) { + when(mLockScreenUserManager.userAllowsPrivateNotificationsInPublic(anyInt())).thenReturn( + allow); } @Test -- cgit v1.2.3-59-g8ed1b