diff --git a/res/layout/notification_ls_minimalism_selector.xml b/res/layout/notification_ls_minimalism_selector.xml index cf34561082d..cf6766afd06 100644 --- a/res/layout/notification_ls_minimalism_selector.xml +++ b/res/layout/notification_ls_minimalism_selector.xml @@ -19,22 +19,10 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" android:orientation="vertical" + android:paddingTop="@dimen/settingslib_illustration_padding" android:layout_width="match_parent" android:layout_height="wrap_content"> - - @@ -101,12 +88,11 @@ diff --git a/res/values/strings.xml b/res/values/strings.xml index 0ddab5bba51..9ecad191fa1 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -8892,14 +8892,8 @@ Full list - - The current default placement is a full shelf and notification stack. - - - Compact - - - New notifications are collapsed into a shelf on your lockscreen. + + Compact View Notifications on lock screen @@ -8963,17 +8957,20 @@ When your device is locked, how do you want profile notifications to show? - - Hide seen notifications + + What to show on lock screen - - Seen notifications are removed from the lock screen. + + Show seen notifications - Hide silent notifications + Show silent notifications - - Silent notifications and conversations are removed from the lock screen. + + Show sensitive content + + + Show sensitive work profile content Profile notifications diff --git a/res/xml/lock_screen_notifications_settings.xml b/res/xml/lock_screen_notifications_settings.xml index b5fb12869e0..e870143823d 100644 --- a/res/xml/lock_screen_notifications_settings.xml +++ b/res/xml/lock_screen_notifications_settings.xml @@ -44,26 +44,30 @@ android:layout="@layout/notification_ls_minimalism_selector" settings:controller="com.android.settings.notification.lockscreen.MinimalismPreferenceController" /> - + - + - + - + + + + + diff --git a/src/com/android/settings/notification/LockScreenNotificationHideSeenToggleController.java b/src/com/android/settings/notification/LockScreenNotificationShowSeenController.java similarity index 91% rename from src/com/android/settings/notification/LockScreenNotificationHideSeenToggleController.java rename to src/com/android/settings/notification/LockScreenNotificationShowSeenController.java index 3253937de8c..2c5a71ef84a 100644 --- a/src/com/android/settings/notification/LockScreenNotificationHideSeenToggleController.java +++ b/src/com/android/settings/notification/LockScreenNotificationShowSeenController.java @@ -39,7 +39,7 @@ import com.android.settings.core.TogglePreferenceController; * Controls the toggle that determines whether to hide seen notifications from the lock screen. * Toggle for setting: Settings.Secure.LOCK_SCREEN_SHOW_ONLY_UNSEEN_NOTIFICATIONS */ -public class LockScreenNotificationHideSeenToggleController extends TogglePreferenceController +public class LockScreenNotificationShowSeenController extends TogglePreferenceController implements LifecycleEventObserver { private static final int UNSET = 0; @@ -57,7 +57,7 @@ public class LockScreenNotificationHideSeenToggleController extends TogglePrefer } }; - public LockScreenNotificationHideSeenToggleController(@NonNull Context context, + public LockScreenNotificationShowSeenController(@NonNull Context context, @NonNull String preferenceKey) { super(context, preferenceKey); mContentResolver = context.getContentResolver(); @@ -90,7 +90,7 @@ public class LockScreenNotificationHideSeenToggleController extends TogglePrefer @Override public void updateState(@NonNull Preference preference) { super.updateState(preference); - setChecked(lockScreenShowOnlyUnseenNotifications()); + setChecked(lockScreenShowSeenNotifications()); preference.setVisible(isAvailable()); } @@ -115,18 +115,18 @@ public class LockScreenNotificationHideSeenToggleController extends TogglePrefer @Override public boolean isChecked() { - return lockScreenShowOnlyUnseenNotifications(); + return lockScreenShowSeenNotifications(); } - private boolean lockScreenShowOnlyUnseenNotifications() { + private boolean lockScreenShowSeenNotifications() { return Settings.Secure.getInt(mContext.getContentResolver(), - Settings.Secure.LOCK_SCREEN_SHOW_ONLY_UNSEEN_NOTIFICATIONS, UNSET) == ON; + Settings.Secure.LOCK_SCREEN_SHOW_ONLY_UNSEEN_NOTIFICATIONS, UNSET) == OFF; } @Override public boolean setChecked(boolean isChecked) { return Settings.Secure.putInt(mContext.getContentResolver(), - Settings.Secure.LOCK_SCREEN_SHOW_ONLY_UNSEEN_NOTIFICATIONS, (isChecked ? ON : OFF)); + Settings.Secure.LOCK_SCREEN_SHOW_ONLY_UNSEEN_NOTIFICATIONS, (isChecked ? OFF : ON)); } @Override diff --git a/src/com/android/settings/notification/LockScreenNotificationShowSensitiveToggleController.java b/src/com/android/settings/notification/LockScreenNotificationShowSensitiveController.java similarity index 93% rename from src/com/android/settings/notification/LockScreenNotificationShowSensitiveToggleController.java rename to src/com/android/settings/notification/LockScreenNotificationShowSensitiveController.java index 738714dc162..038ceddd4b5 100644 --- a/src/com/android/settings/notification/LockScreenNotificationShowSensitiveToggleController.java +++ b/src/com/android/settings/notification/LockScreenNotificationShowSensitiveController.java @@ -53,7 +53,7 @@ import java.util.List; * when locked. * Toggle for: Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS */ -public class LockScreenNotificationShowSensitiveToggleController +public class LockScreenNotificationShowSensitiveController extends TogglePreferenceController implements LifecycleEventObserver { private static final int ON = 1; @@ -78,7 +78,7 @@ public class LockScreenNotificationShowSensitiveToggleController } }; - public LockScreenNotificationShowSensitiveToggleController(@NonNull Context context, + public LockScreenNotificationShowSensitiveController(@NonNull Context context, @NonNull String preferenceKey) { super(context, preferenceKey); mContentResolver = context.getContentResolver(); @@ -145,7 +145,7 @@ public class LockScreenNotificationShowSensitiveToggleController @Override public void updateState(@Nullable Preference preference) { if (preference == null) return; - setChecked(showSensitiveContentOnlyWhenUnlocked()); + setChecked(showSensitiveContentWhenLocked()); preference.setVisible(isAvailable()); } @@ -187,15 +187,15 @@ public class LockScreenNotificationShowSensitiveToggleController @Override public boolean isChecked() { - return showSensitiveContentOnlyWhenUnlocked(); + return showSensitiveContentWhenLocked(); } - private boolean showSensitiveContentOnlyWhenUnlocked() { + private boolean showSensitiveContentWhenLocked() { int userId = getUserId(); - if (!isLockScreenSecure()) return false; - if (getEnforcedAdmin(userId) != null) return true; + if (!isLockScreenSecure()) return true; + if (getEnforcedAdmin(userId) != null) return false; return Settings.Secure.getIntForUser(mContext.getContentResolver(), - Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, ON, userId) == OFF; + Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, ON, userId) == ON; } @Override @@ -203,7 +203,7 @@ public class LockScreenNotificationShowSensitiveToggleController return Settings.Secure.putIntForUser( mContext.getContentResolver(), Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, - (isChecked ? OFF : ON), getUserId() + (isChecked ? ON : OFF), getUserId() ); } diff --git a/src/com/android/settings/notification/LockScreenNotificationHideSilentToggleController.java b/src/com/android/settings/notification/LockScreenNotificationShowSilentController.java similarity index 91% rename from src/com/android/settings/notification/LockScreenNotificationHideSilentToggleController.java rename to src/com/android/settings/notification/LockScreenNotificationShowSilentController.java index ad33ec35414..2d2bbb765b9 100644 --- a/src/com/android/settings/notification/LockScreenNotificationHideSilentToggleController.java +++ b/src/com/android/settings/notification/LockScreenNotificationShowSilentController.java @@ -38,7 +38,7 @@ import com.android.settings.core.TogglePreferenceController; * Controls the toggle that determines whether to show silent notifications when screen locked. * Toggle for: Settings.Secure.LOCK_SCREEN_SHOW_SILENT_NOTIFICATIONS */ -public class LockScreenNotificationHideSilentToggleController extends TogglePreferenceController +public class LockScreenNotificationShowSilentController extends TogglePreferenceController implements LifecycleEventObserver { private static final int ON = 1; @@ -56,7 +56,7 @@ public class LockScreenNotificationHideSilentToggleController extends TogglePref } }; - public LockScreenNotificationHideSilentToggleController(@NonNull Context context, + public LockScreenNotificationShowSilentController(@NonNull Context context, @NonNull String preferenceKey) { super(context, preferenceKey); mContentResolver = context.getContentResolver(); @@ -89,13 +89,13 @@ public class LockScreenNotificationHideSilentToggleController extends TogglePref @Override public void updateState(@NonNull Preference preference) { super.updateState(preference); - setChecked(hideSilentNotificationsWhenLocked()); + setChecked(showSilentNotificationsWhenLocked()); preference.setVisible(isAvailable()); } - private boolean hideSilentNotificationsWhenLocked() { + private boolean showSilentNotificationsWhenLocked() { return Settings.Secure.getInt(mContext.getContentResolver(), - Settings.Secure.LOCK_SCREEN_SHOW_SILENT_NOTIFICATIONS, OFF) == OFF; + Settings.Secure.LOCK_SCREEN_SHOW_SILENT_NOTIFICATIONS, OFF) == ON; } @Override @@ -116,13 +116,13 @@ public class LockScreenNotificationHideSilentToggleController extends TogglePref @Override public boolean isChecked() { - return hideSilentNotificationsWhenLocked(); + return showSilentNotificationsWhenLocked(); } @Override public boolean setChecked(boolean isChecked) { return Settings.Secure.putInt(mContext.getContentResolver(), - Settings.Secure.LOCK_SCREEN_SHOW_SILENT_NOTIFICATIONS, (isChecked ? OFF : ON)); + Settings.Secure.LOCK_SCREEN_SHOW_SILENT_NOTIFICATIONS, (isChecked ? ON : OFF)); } @Override diff --git a/src/com/android/settings/notification/lockscreen/MinimalismPreferenceController.java b/src/com/android/settings/notification/lockscreen/MinimalismPreferenceController.java index 78be16a1d71..90ede591eef 100644 --- a/src/com/android/settings/notification/lockscreen/MinimalismPreferenceController.java +++ b/src/com/android/settings/notification/lockscreen/MinimalismPreferenceController.java @@ -27,7 +27,6 @@ import android.os.Handler; import android.os.Looper; import android.provider.Settings; import android.widget.LinearLayout; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -62,13 +61,8 @@ public class MinimalismPreferenceController Settings.Secure.getUriFor(LOCK_SCREEN_SHOW_NOTIFICATIONS); @Nullable private LayoutPreference mPreference; - @Nullable private TextView mDescView; private Map mButtons = new HashMap<>(); private Map mIllustrations = new HashMap<>(); - private final Map mDescriptionTexts = Map.ofEntries( - Map.entry(LS_MINIMALISM_OFF, R.string.lock_screen_notifs_full_list_desc), - Map.entry(LS_MINIMALISM_ON, R.string.lock_screen_notifs_compact_desc) - ); private final ContentResolver mContentResolver; @@ -130,7 +124,6 @@ public class MinimalismPreferenceController public void displayPreference(@NonNull PreferenceScreen screen) { super.displayPreference(screen); mPreference = screen.findPreference(KEY_MINIMALISM_PREFERENCE); - mDescView = mPreference.findViewById(R.id.notif_ls_style_desc); mButtons = Map.ofEntries( Map.entry(LS_MINIMALISM_OFF, @@ -165,14 +158,6 @@ public class MinimalismPreferenceController -> preference.setVisible(currentValue == value)); } - private void highlightDescription(int value) { - if (mDescView == null) return; - Integer descStringId = mDescriptionTexts.get(value); - if (descStringId != null) { - mDescView.setText(descStringId); - } - } - private int getCurrentMinimalismValue() { return Settings.Secure.getInt(mContext.getContentResolver(), LOCK_SCREEN_NOTIFICATION_MINIMALISM, LS_MINIMALISM_ON); @@ -190,7 +175,6 @@ public class MinimalismPreferenceController int currentValue = getCurrentMinimalismValue(); highlightButton(currentValue); highlightIllustration(currentValue); - highlightDescription(currentValue); } } } diff --git a/tests/robotests/src/com/android/settings/notification/LockScreenNotificationShowSensitiveToggleControllerTest.java b/tests/robotests/src/com/android/settings/notification/LockScreenNotificationShowSensitiveControllerTest.java similarity index 93% rename from tests/robotests/src/com/android/settings/notification/LockScreenNotificationShowSensitiveToggleControllerTest.java rename to tests/robotests/src/com/android/settings/notification/LockScreenNotificationShowSensitiveControllerTest.java index ea556a592d8..9a29de2c926 100644 --- a/tests/robotests/src/com/android/settings/notification/LockScreenNotificationShowSensitiveToggleControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/LockScreenNotificationShowSensitiveControllerTest.java @@ -63,7 +63,7 @@ import java.util.Arrays; ShadowUtils.class, ShadowRestrictedLockUtilsInternal.class, }) -public class LockScreenNotificationShowSensitiveToggleControllerTest { +public class LockScreenNotificationShowSensitiveControllerTest { @Mock private DevicePolicyManager mDpm; @@ -79,8 +79,8 @@ public class LockScreenNotificationShowSensitiveToggleControllerTest { private Context mMockContext; private Context mContext; - private LockScreenNotificationShowSensitiveToggleController mController; - private LockScreenNotificationShowSensitiveToggleController mWorkController; + private LockScreenNotificationShowSensitiveController mController; + private LockScreenNotificationShowSensitiveController mWorkController; private RestrictedSwitchPreference mPreference; private RestrictedSwitchPreference mWorkPreference; @@ -98,9 +98,9 @@ public class LockScreenNotificationShowSensitiveToggleControllerTest { when(mMockContext.getSystemService(KeyguardManager.class)).thenReturn(mKm); when(mUm.getProfiles(anyInt())).thenReturn(Arrays.asList(new UserInfo(0, "", 0))); - mController = new LockScreenNotificationShowSensitiveToggleController( + mController = new LockScreenNotificationShowSensitiveController( mMockContext, - LockScreenNotificationShowSensitiveToggleController.KEY_SHOW_SENSITIVE + LockScreenNotificationShowSensitiveController.KEY_SHOW_SENSITIVE ); mPreference = new RestrictedSwitchPreference(mContext); mPreference.setKey(mController.getPreferenceKey()); @@ -110,9 +110,9 @@ public class LockScreenNotificationShowSensitiveToggleControllerTest { when(mUm.getProfiles(anyInt())).thenReturn(Arrays.asList( new UserInfo(5, "", 0), new UserInfo(10, "", UserInfo.FLAG_MANAGED_PROFILE | UserInfo.FLAG_PROFILE))); - mWorkController = new LockScreenNotificationShowSensitiveToggleController( + mWorkController = new LockScreenNotificationShowSensitiveController( mMockContext, - LockScreenNotificationShowSensitiveToggleController.KEY_SHOW_SENSITIVE_WORK_PROFILE + LockScreenNotificationShowSensitiveController.KEY_SHOW_SENSITIVE_WORK_PROFILE ); mWorkPreference = new RestrictedSwitchPreference(mContext); mWorkPreference.setKey(mWorkController.getPreferenceKey()); @@ -150,12 +150,12 @@ public class LockScreenNotificationShowSensitiveToggleControllerTest { // reset controllers with no work profile when(mUm.getProfiles(anyInt())).thenReturn(Arrays.asList( new UserInfo(UserHandle.myUserId(), "", 0))); - mWorkController = new LockScreenNotificationShowSensitiveToggleController( + mWorkController = new LockScreenNotificationShowSensitiveController( mMockContext, - LockScreenNotificationShowSensitiveToggleController.KEY_SHOW_SENSITIVE_WORK_PROFILE + LockScreenNotificationShowSensitiveController.KEY_SHOW_SENSITIVE_WORK_PROFILE ); - mController = new LockScreenNotificationShowSensitiveToggleController(mMockContext, - LockScreenNotificationShowSensitiveToggleController.KEY_SHOW_SENSITIVE); + mController = new LockScreenNotificationShowSensitiveController(mMockContext, + LockScreenNotificationShowSensitiveController.KEY_SHOW_SENSITIVE); // should otherwise show when(mLockPatternUtils.isSecure(anyInt())).thenReturn(true); @@ -271,13 +271,13 @@ public class LockScreenNotificationShowSensitiveToggleControllerTest { LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 0, 0); - assertThat(mController.isChecked()).isTrue(); + assertThat(mController.isChecked()).isFalse(); Settings.Secure.putIntForUser(mContext.getContentResolver(), LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 1, 0); - assertThat(mController.isChecked()).isFalse(); + assertThat(mController.isChecked()).isTrue(); } @Test @@ -287,13 +287,13 @@ public class LockScreenNotificationShowSensitiveToggleControllerTest { LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 0, 10); - assertThat(mWorkController.isChecked()).isTrue(); + assertThat(mWorkController.isChecked()).isFalse(); Settings.Secure.putIntForUser(mContext.getContentResolver(), LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 1, 10); - assertThat(mWorkController.isChecked()).isFalse(); + assertThat(mWorkController.isChecked()).isTrue(); } @Test @@ -305,7 +305,7 @@ public class LockScreenNotificationShowSensitiveToggleControllerTest { ShadowRestrictedLockUtilsInternal.setKeyguardDisabledFeatures( KEYGUARD_DISABLE_SECURE_NOTIFICATIONS); - assertThat(mController.isChecked()).isFalse(); + assertThat(mController.isChecked()).isTrue(); } @Test @@ -317,7 +317,7 @@ public class LockScreenNotificationShowSensitiveToggleControllerTest { mController.setChecked(false); assertThat(Settings.Secure.getIntForUser( mContext.getContentResolver(), LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 0)) - .isEqualTo(1); + .isEqualTo(0); } @Test @@ -329,7 +329,7 @@ public class LockScreenNotificationShowSensitiveToggleControllerTest { mWorkController.setChecked(true); assertThat(Settings.Secure.getIntForUser( mContext.getContentResolver(), LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 10)) - .isEqualTo(0); + .isEqualTo(1); } @Test @@ -345,10 +345,10 @@ public class LockScreenNotificationShowSensitiveToggleControllerTest { mWorkController.setChecked(true); assertThat(Settings.Secure.getIntForUser( mContext.getContentResolver(), LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 10)) - .isEqualTo(0); + .isEqualTo(1); assertThat(Settings.Secure.getIntForUser( mContext.getContentResolver(), LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 0)) - .isEqualTo(0); + .isEqualTo(1); } }