diff --git a/res/values/strings.xml b/res/values/strings.xml index e277e9905d7..15ff7a0f187 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -750,8 +750,6 @@ Phone encrypted Lock screen preferences - - Show all notification content Set My Location, screen unlock, SIM card lock, credential storage lock diff --git a/res/xml/security_settings_chooser.xml b/res/xml/security_settings_chooser.xml index dc6e727f751..067ebaba0d0 100644 --- a/res/xml/security_settings_chooser.xml +++ b/res/xml/security_settings_chooser.xml @@ -31,7 +31,6 @@ diff --git a/res/xml/security_settings_password.xml b/res/xml/security_settings_password.xml index e3a5dfd3b23..7de65f7cc0b 100644 --- a/res/xml/security_settings_password.xml +++ b/res/xml/security_settings_password.xml @@ -30,7 +30,6 @@ diff --git a/res/xml/security_settings_pattern.xml b/res/xml/security_settings_pattern.xml index 295e896e665..1585f016ee8 100644 --- a/res/xml/security_settings_pattern.xml +++ b/res/xml/security_settings_pattern.xml @@ -30,7 +30,6 @@ diff --git a/res/xml/security_settings_pin.xml b/res/xml/security_settings_pin.xml index 5613177c609..f7705b7e9cd 100644 --- a/res/xml/security_settings_pin.xml +++ b/res/xml/security_settings_pin.xml @@ -30,7 +30,6 @@ diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java index a56889d252d..1e64b7f1bae 100644 --- a/src/com/android/settings/SecuritySettings.java +++ b/src/com/android/settings/SecuritySettings.java @@ -60,6 +60,7 @@ import com.android.settings.enterprise.EnterprisePrivacyPreferenceController; import com.android.settings.enterprise.ManageDeviceAdminPreferenceController; import com.android.settings.fingerprint.FingerprintSettings; import com.android.settings.location.LocationPreferenceController; +import com.android.settings.notification.LockScreenNotificationPreferenceController; import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; @@ -103,6 +104,8 @@ public class SecuritySettings extends SettingsPreferenceFragment @VisibleForTesting static final String KEY_MANAGE_TRUST_AGENTS = "manage_trust_agents"; private static final String KEY_UNIFICATION = "unification"; + @VisibleForTesting + static final String KEY_LOCKSCREEN_PREFERENCES = "lockscreen_preferences"; private static final int SET_OR_CHANGE_LOCK_METHOD_REQUEST = 123; private static final int CHANGE_TRUST_AGENT_SETTINGS = 126; @@ -169,6 +172,7 @@ public class SecuritySettings extends SettingsPreferenceFragment private LocationPreferenceController mLocationcontroller; private ManageDeviceAdminPreferenceController mManageDeviceAdminPreferenceController; private EnterprisePrivacyPreferenceController mEnterprisePrivacyPreferenceController; + private LockScreenNotificationPreferenceController mLockScreenNotificationPreferenceController; @Override public int getMetricsCategory() { @@ -210,6 +214,8 @@ public class SecuritySettings extends SettingsPreferenceFragment = new ManageDeviceAdminPreferenceController(activity); mEnterprisePrivacyPreferenceController = new EnterprisePrivacyPreferenceController(activity, null /* lifecycle */); + mLockScreenNotificationPreferenceController + = new LockScreenNotificationPreferenceController(activity); } private static int getResIdForLockUnlockScreen(Context context, @@ -317,6 +323,7 @@ public class SecuritySettings extends SettingsPreferenceFragment if (securityCategory != null) { maybeAddFingerprintPreference(securityCategory, UserHandle.myUserId()); numberOfTrustAgent = addTrustAgentSettings(securityCategory); + setLockscreenPreferencesSummary(securityCategory); } mVisiblePatternProfile = @@ -423,6 +430,15 @@ public class SecuritySettings extends SettingsPreferenceFragment } } + @VisibleForTesting + void setLockscreenPreferencesSummary(PreferenceGroup group) { + final Preference lockscreenPreferences = group.findPreference(KEY_LOCKSCREEN_PREFERENCES); + if (lockscreenPreferences != null) { + lockscreenPreferences.setSummary( + mLockScreenNotificationPreferenceController.getSummaryResource()); + } + } + /* * Sets the preference as disabled by admin if PASSWORD_QUALITY_MANAGED is set. * The preference must be a RestrictedPreference. diff --git a/src/com/android/settings/notification/LockScreenNotificationPreferenceController.java b/src/com/android/settings/notification/LockScreenNotificationPreferenceController.java index a7ebbe13dc0..547ff801756 100644 --- a/src/com/android/settings/notification/LockScreenNotificationPreferenceController.java +++ b/src/com/android/settings/notification/LockScreenNotificationPreferenceController.java @@ -267,16 +267,20 @@ public class LockScreenNotificationPreferenceController extends PreferenceContro } } + public int getSummaryResource() { + final boolean enabled = getLockscreenNotificationsEnabled(UserHandle.myUserId()); + final boolean allowPrivate = !mSecure + || getLockscreenAllowPrivateNotifications(UserHandle.myUserId()); + return !enabled ? R.string.lock_screen_notifications_summary_disable : + allowPrivate ? R.string.lock_screen_notifications_summary_show : + R.string.lock_screen_notifications_summary_hide; + } + private void updateLockscreenNotifications() { if (mLockscreen == null) { return; } - final boolean enabled = getLockscreenNotificationsEnabled(UserHandle.myUserId()); - final boolean allowPrivate = !mSecure - || getLockscreenAllowPrivateNotifications(UserHandle.myUserId()); - mLockscreenSelectedValue = !enabled ? R.string.lock_screen_notifications_summary_disable : - allowPrivate ? R.string.lock_screen_notifications_summary_show : - R.string.lock_screen_notifications_summary_hide; + mLockscreenSelectedValue = getSummaryResource(); mLockscreen.setValue(Integer.toString(mLockscreenSelectedValue)); } diff --git a/tests/robotests/src/com/android/settings/SecuritySettingsTest.java b/tests/robotests/src/com/android/settings/SecuritySettingsTest.java index 91111a8b005..9bdf502b9b8 100644 --- a/tests/robotests/src/com/android/settings/SecuritySettingsTest.java +++ b/tests/robotests/src/com/android/settings/SecuritySettingsTest.java @@ -24,10 +24,12 @@ import android.hardware.fingerprint.FingerprintManager; import android.os.Bundle; import android.provider.Settings; import android.support.v7.preference.Preference; +import android.support.v7.preference.PreferenceGroup; import android.support.v7.preference.PreferenceScreen; import com.android.internal.widget.LockPatternUtils; import com.android.settings.dashboard.SummaryLoader; +import com.android.settings.notification.LockScreenNotificationPreferenceController; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.shadow.ShadowSecureSettings; import com.android.settingslib.drawer.DashboardCategory; @@ -47,6 +49,7 @@ import org.robolectric.shadows.ShadowApplication; import org.robolectric.util.ReflectionHelpers; import java.util.Map; +import org.robolectric.util.ReflectionHelpers; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; @@ -186,4 +189,22 @@ public class SecuritySettingsTest { verify(preference).setSummary(context.getResources().getQuantityString( R.plurals.manage_trust_agents_summary_on, 2, 2)); } + + @Test + public void testSetLockscreenPreferencesSummary_shouldSetSummaryFromLockScreenNotification() { + final Preference preference = mock(Preference.class); + final PreferenceGroup group = mock(PreferenceGroup.class); + when(group.findPreference(SecuritySettings.KEY_LOCKSCREEN_PREFERENCES)) + .thenReturn(preference); + final LockScreenNotificationPreferenceController controller = + mock(LockScreenNotificationPreferenceController.class); + + final SecuritySettings securitySettings = new SecuritySettings(); + ReflectionHelpers.setField(securitySettings, + "mLockScreenNotificationPreferenceController", controller); + + when(controller.getSummaryResource()).thenReturn(1234); + securitySettings.setLockscreenPreferencesSummary(group); + verify(preference).setSummary(1234); + } }