From 826e6c4b9a8ffc8bec048354ad8d2a5572af2a3f Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Wed, 7 Feb 2018 10:42:00 -0500 Subject: [PATCH] Notification lock screen setting updates - 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 | 8 ++--- .../VisibilityPreferenceController.java | 19 +++++++----- .../VisibilityPreferenceControllerTest.java | 34 +++++++++++++--------- 3 files changed, 35 insertions(+), 26 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 35bc32eedd..0e7b0b99e9 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -7083,7 +7083,7 @@ Blink light - On the lock screen + On lock screen - Hide sensitive notification content + Hide sensitive content @@ -7113,7 +7113,7 @@ - Hide sensitive work notification content + Hide sensitive work content @@ -7373,7 +7373,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 62ca183ccc..dac90ef7be 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 25dba80ef1..d3863db465 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()); -- 2.11.0