Merge "Fixed the logic when dynamic privacy is enabled" into sc-dev
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 9482c17..a0ccd57 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 @@
 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 @@
         }
     }
 
-    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 68cf66d..7d06abf 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 @@
         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 @@
         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