OSDN Git Service

Notification lock screen setting updates
authorJulia Reynolds <juliacr@google.com>
Wed, 7 Feb 2018 15:42:00 +0000 (10:42 -0500)
committerJulia Reynolds <juliacr@google.com>
Wed, 7 Feb 2018 16:34:49 +0000 (16:34 +0000)
- String update
- Don't show 'hide notifications' option at app/channel level
if 'don't show' is selected globally

Test: SettingsRoboTests
Change-Id: I180b91019183865aa0f4f6adce917ebe7211dbb5
Fixes: 72833828
Fixes: 72651566

res/values/strings.xml
src/com/android/settings/notification/VisibilityPreferenceController.java
tests/robotests/src/com/android/settings/notification/VisibilityPreferenceControllerTest.java

index 35bc32e..0e7b0b9 100644 (file)
     <string name="notification_pulse_title">Blink light</string>
 
     <!-- Configure Notifications: Title for the option controlling notifications on the lockscreen. [CHAR LIMIT=30] -->
-    <string name="lock_screen_notifications_title">On the lock screen</string>
+    <string name="lock_screen_notifications_title">On lock screen</string>
 
     <!-- Configure Notifications: Value for lockscreen notifications:  all information will be
          shown in notifications shown on a secure lock screen
     <!-- Configure Notifications: Value for lockscreen notifications: sensitive information will be
          hidden or redacted from notifications shown on a secure lock screen
          [CHAR LIMIT=50] -->
-    <string name="lock_screen_notifications_summary_hide">Hide sensitive notification content</string>
+    <string name="lock_screen_notifications_summary_hide">Hide sensitive content</string>
 
     <!-- Configure Notifications: Value for lockscreen notifications: notifications will not appear on a secure lock screen
          [CHAR LIMIT=50] -->
     <!-- Configure Notifications: Value for lockscreen notifications: sensitive information will be
          hidden or redacted from work notifications shown on a secure lock screen
          [CHAR LIMIT=50] -->
-    <string name="lock_screen_notifications_summary_hide_profile">Hide sensitive work notification content</string>
+    <string name="lock_screen_notifications_summary_hide_profile">Hide sensitive work content</string>
 
     <!-- Configure Notifications: Value for lockscreen notifications: work notifications will not appear on a secure lock screen
          [CHAR LIMIT=50] -->
     <string name="app_notification_override_dnd_summary">Let these notifications continue to interrupt when Do Not Disturb is set to Priority Only</string>
 
     <!-- [CHAR LIMIT=NONE] App notification settings: Visibility override option title -->
-    <string name="app_notification_visibility_override_title">On the lock screen</string>
+    <string name="app_notification_visibility_override_title">On lock screen</string>
 
     <!-- [CHAR LIMIT=20] Notification settings: App notifications row summary when allowed -->
     <string name="app_notification_row_banned">Blocked</string>
index 62ca183..dac90ef 100644 (file)
@@ -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()]));
index 25dba80..d3863db 100644 (file)
@@ -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<CharSequence[]> 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<String> 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<String> 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());