diff --git a/res/values/strings.xml b/res/values/strings.xml
index d462450c141..e1be17707ef 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -7086,7 +7086,7 @@
Blink light
- On the lock screen
+ On lock screen
- Hide sensitive notification content
+ Hide sensitive content
@@ -7116,7 +7116,7 @@
- Hide sensitive work notification content
+ Hide sensitive work content
@@ -7376,7 +7376,7 @@
Let these notifications continue to interrupt when Do Not Disturb is set to Priority Only
- On the lock screen
+ On lock screen
Blocked
diff --git a/src/com/android/settings/notification/VisibilityPreferenceController.java b/src/com/android/settings/notification/VisibilityPreferenceController.java
index 62ca183ccc4..dac90ef7be7 100644
--- a/src/com/android/settings/notification/VisibilityPreferenceController.java
+++ b/src/com/android/settings/notification/VisibilityPreferenceController.java
@@ -84,14 +84,17 @@ public class VisibilityPreferenceController extends NotificationPreferenceContro
| DevicePolicyManager.KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS);
}
- final String summaryHideEntry =
- mContext.getString(R.string.lock_screen_notifications_summary_hide);
- final String summaryHideEntryValue = Integer.toString(Notification.VISIBILITY_PRIVATE);
- entries.add(summaryHideEntry);
- values.add(summaryHideEntryValue);
- setRestrictedIfNotificationFeaturesDisabled(pref,
- summaryHideEntry, summaryHideEntryValue,
- DevicePolicyManager.KEYGUARD_DISABLE_SECURE_NOTIFICATIONS);
+ if (getLockscreenNotificationsEnabled()) {
+ final String summaryHideEntry =
+ mContext.getString(R.string.lock_screen_notifications_summary_hide);
+ final String summaryHideEntryValue = Integer.toString(
+ Notification.VISIBILITY_PRIVATE);
+ entries.add(summaryHideEntry);
+ values.add(summaryHideEntryValue);
+ setRestrictedIfNotificationFeaturesDisabled(pref,
+ summaryHideEntry, summaryHideEntryValue,
+ DevicePolicyManager.KEYGUARD_DISABLE_SECURE_NOTIFICATIONS);
+ }
entries.add(mContext.getString(R.string.lock_screen_notifications_summary_disable));
values.add(Integer.toString(Notification.VISIBILITY_SECRET));
pref.setEntries(entries.toArray(new CharSequence[entries.size()]));
diff --git a/tests/robotests/src/com/android/settings/notification/VisibilityPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/VisibilityPreferenceControllerTest.java
index 25dba80ef1c..d3863db4653 100644
--- a/tests/robotests/src/com/android/settings/notification/VisibilityPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/VisibilityPreferenceControllerTest.java
@@ -16,6 +16,7 @@
package com.android.settings.notification;
+import static android.app.Notification.VISIBILITY_PRIVATE;
import static android.app.NotificationChannel.DEFAULT_CHANNEL_ID;
import static android.app.NotificationManager.IMPORTANCE_DEFAULT;
import static android.app.NotificationManager.IMPORTANCE_MIN;
@@ -114,14 +115,14 @@ public class VisibilityPreferenceControllerTest {
}
@Test
- public void testNoCrashIfNoOnResume() throws Exception {
+ public void testNoCrashIfNoOnResume() {
mController.isAvailable();
mController.updateState(mock(RestrictedListPreference.class));
mController.onPreferenceChange(mock(RestrictedListPreference.class), true);
}
@Test
- public void testIsAvailable_notSecure() throws Exception {
+ public void testIsAvailable_notSecure() {
when(mLockUtils.isSecure(anyInt())).thenReturn(false);
NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
NotificationChannel channel = new NotificationChannel("", "", IMPORTANCE_DEFAULT);
@@ -130,7 +131,7 @@ public class VisibilityPreferenceControllerTest {
}
@Test
- public void testIsAvailable_notIfNotImportant() throws Exception {
+ public void testIsAvailable_notIfNotImportant() {
NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
NotificationChannel channel = new NotificationChannel("", "", IMPORTANCE_MIN);
mController.onResume(appRow, channel, null, null);
@@ -138,7 +139,7 @@ public class VisibilityPreferenceControllerTest {
}
@Test
- public void testIsAvailable() throws Exception {
+ public void testIsAvailable() {
NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
NotificationChannel channel =
new NotificationChannel(DEFAULT_CHANNEL_ID, "", IMPORTANCE_DEFAULT);
@@ -151,7 +152,7 @@ public class VisibilityPreferenceControllerTest {
}
@Test
- public void testUpdateState_disabledByAdmin_disableSecure() throws Exception {
+ public void testUpdateState_disabledByAdmin_disableSecure() {
ShadowRestrictionUtils.setRestricted(true);
UserInfo userInfo = new UserInfo(2, "user 2", UserInfo.FLAG_MANAGED_PROFILE);
when(mUm.getUserInfo(anyInt())).thenReturn(userInfo);
@@ -173,7 +174,7 @@ public class VisibilityPreferenceControllerTest {
}
@Test
- public void testUpdateState_disabledByAdmin_disableUnredacted() throws Exception {
+ public void testUpdateState_disabledByAdmin_disableUnredacted() {
ShadowRestrictionUtils.setRestricted(true);
UserInfo userInfo = new UserInfo(2, "user 2", UserInfo.FLAG_MANAGED_PROFILE);
when(mUm.getUserInfo(anyInt())).thenReturn(userInfo);
@@ -195,7 +196,7 @@ public class VisibilityPreferenceControllerTest {
}
@Test
- public void testUpdateState_noLockScreenNotificationsGlobally() throws Exception {
+ public void testUpdateState_noLockScreenNotificationsGlobally() {
Settings.Secure.putInt(mContext.getContentResolver(),
Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, 0);
@@ -211,10 +212,14 @@ public class VisibilityPreferenceControllerTest {
verify(pref, times(1)).setEntryValues(argumentCaptor.capture());
assertFalse(toStringList(argumentCaptor.getValue())
.contains(String.valueOf(VISIBILITY_NO_OVERRIDE)));
+ assertFalse(toStringList(argumentCaptor.getValue())
+ .contains(String.valueOf(VISIBILITY_PRIVATE)));
}
@Test
- public void testUpdateState_noPrivateLockScreenNotificationsGlobally() throws Exception {
+ public void testUpdateState_noPrivateLockScreenNotificationsGlobally() {
+ Settings.Secure.putInt(mContext.getContentResolver(),
+ Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, 1);
Settings.Secure.putInt(mContext.getContentResolver(),
Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 0);
@@ -228,12 +233,13 @@ public class VisibilityPreferenceControllerTest {
ArgumentCaptor argumentCaptor =
ArgumentCaptor.forClass(CharSequence[].class);
verify(pref, times(1)).setEntryValues(argumentCaptor.capture());
+ assertEquals(2, toStringList(argumentCaptor.getValue()).size());
assertFalse(toStringList(argumentCaptor.getValue())
.contains(String.valueOf(VISIBILITY_NO_OVERRIDE)));
}
@Test
- public void testUpdateState_noGlobalRestriction() throws Exception {
+ public void testUpdateState_noGlobalRestriction() {
NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
NotificationChannel channel = mock(NotificationChannel.class);
mController.onResume(appRow, channel, null, null);
@@ -247,7 +253,7 @@ public class VisibilityPreferenceControllerTest {
List values = toStringList(argumentCaptor.getValue());
assertEquals(3, values.size());
assertTrue(values.contains(String.valueOf(VISIBILITY_NO_OVERRIDE)));
- assertTrue(values.contains(String.valueOf(Notification.VISIBILITY_PRIVATE)));
+ assertTrue(values.contains(String.valueOf(VISIBILITY_PRIVATE)));
assertTrue(values.contains(String.valueOf(Notification.VISIBILITY_SECRET)));
}
@@ -260,7 +266,7 @@ public class VisibilityPreferenceControllerTest {
}
@Test
- public void testUpdateState_noChannelOverride() throws Exception {
+ public void testUpdateState_noChannelOverride() {
Settings.Secure.putInt(mContext.getContentResolver(),
Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 0);
@@ -275,11 +281,11 @@ public class VisibilityPreferenceControllerTest {
ArgumentCaptor argumentCaptor = ArgumentCaptor.forClass(String.class);
verify(pref, times(1)).setValue(argumentCaptor.capture());
- assertEquals(String.valueOf(Notification.VISIBILITY_PRIVATE), argumentCaptor.getValue());
+ assertEquals(String.valueOf(VISIBILITY_PRIVATE), argumentCaptor.getValue());
}
@Test
- public void testUpdateState_channelOverride() throws Exception {
+ public void testUpdateState_channelOverride() {
Settings.Secure.putInt(mContext.getContentResolver(),
Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 0);
@@ -310,7 +316,7 @@ public class VisibilityPreferenceControllerTest {
RestrictedListPreference pref = mock(RestrictedListPreference.class);
mController.updateState(pref);
- mController.onPreferenceChange(pref, String.valueOf(Notification.VISIBILITY_PRIVATE));
+ mController.onPreferenceChange(pref, String.valueOf(VISIBILITY_PRIVATE));
assertEquals(VISIBILITY_NO_OVERRIDE, channel.getLockscreenVisibility());
verify(mBackend, times(1)).updateChannel(any(), anyInt(), any());