Inverse toggles on the notifications on locks screen settings page

Inverse the toggles on the notifications on locks screen settings page
to consistently make ON = SHOW.

Bug: 367455695
Flag: com.android.server.notification.notification_lock_screen_settings
Test: manual, atest LockScreenNotificationShowSensitiveControllerTest
Change-Id: I6e34ef9b89f4c0ad058bf740bafb3c83790201c0
This commit is contained in:
Yining Liu
2024-12-24 00:52:07 +00:00
parent b5fa953d4a
commit 38537f8129
6 changed files with 58 additions and 58 deletions

View File

@@ -8931,17 +8931,17 @@
<!-- Notification Settings > Notifications on lock screen > Title for showing notifications on the lock screen. [CHAR LIMIT=100] --> <!-- Notification Settings > Notifications on lock screen > Title for showing notifications on the lock screen. [CHAR LIMIT=100] -->
<string name="lockscreen_notification_what_to_show_title">What to show on lock screen</string> <string name="lockscreen_notification_what_to_show_title">What to show on lock screen</string>
<!-- Notification Settings > Notifications on lock screen > Summary for hiding seen notifications toggle. [CHAR LIMIT=100] --> <!-- Notification Settings > Notifications on lock screen > Title for showing seen notifications toggle. [CHAR LIMIT=60] -->
<string name="lock_screen_notification_hide_seen_summary">Seen notifications are removed from the lock screen.</string> <string name="lock_screen_notification_show_seen_title">Show seen notifications</string>
<!-- Notification Settings > Notifications on lock screen > Title for hiding silent notifications toggle. [CHAR LIMIT=60] --> <!-- Notification Settings > Notifications on lock screen > Title for hiding silent notifications toggle. [CHAR LIMIT=60] -->
<string name="lock_screen_notification_hide_silent_title">Hide silent notifications</string> <string name="lock_screen_notification_show_silent_title">Show silent notifications</string>
<!-- Notification Settings > Notifications on lock screen > Title for hiding sensitive notification content on lock screen. [CHAR LIMIT=60] --> <!-- Notification Settings > Notifications on lock screen > Title for hiding sensitive notification content on lock screen. [CHAR LIMIT=60] -->
<string name="lock_screen_notification_hide_sensitive_content_title">Hide sensitive content</string> <string name="lock_screen_notification_show_sensitive_content_title">Show sensitive content</string>
<!-- Notification Settings > Notifications on lock screen > Title for hiding sensitive work profile notification content on lock screen. [CHAR LIMIT=100] --> <!-- Notification Settings > Notifications on lock screen > Title for hiding sensitive work profile notification content on lock screen. [CHAR LIMIT=100] -->
<string name="lock_screen_notification_hide_sensitive_work_content_title">Hide sensitive work profile content</string> <string name="lock_screen_notification_show_sensitive_work_content_title">Show sensitive work profile content</string>
<!-- Security > Choose PIN/PW/Pattern > Notification redaction interstitial: Title for the screen asking the user how they want their profile notifications to appear when the device is locked [CHAR LIMIT=30] --> <!-- Security > Choose PIN/PW/Pattern > Notification redaction interstitial: Title for the screen asking the user how they want their profile notifications to appear when the device is locked [CHAR LIMIT=30] -->
<string name="lock_screen_notifications_interstitial_title_profile">Profile notifications</string> <string name="lock_screen_notifications_interstitial_title_profile">Profile notifications</string>

View File

@@ -49,24 +49,24 @@
android:title="@string/lockscreen_notification_what_to_show_title"> android:title="@string/lockscreen_notification_what_to_show_title">
<SwitchPreferenceCompat <SwitchPreferenceCompat
android:key="lock_screen_notification_hide_seen_toggle" android:key="lock_screen_notification_show_seen_toggle"
android:title="@string/lock_screen_notification_hide_seen_summary" android:title="@string/lock_screen_notification_show_seen_title"
settings:controller="com.android.settings.notification.LockScreenNotificationHideSeenToggleController" /> settings:controller="com.android.settings.notification.LockScreenNotificationShowSeenController" />
<SwitchPreferenceCompat <SwitchPreferenceCompat
android:key="lock_screen_notification_hide_silent_toggle" android:key="lock_screen_notification_show_silent_toggle"
android:title="@string/lock_screen_notification_hide_silent_title" android:title="@string/lock_screen_notification_show_silent_title"
settings:controller="com.android.settings.notification.LockScreenNotificationHideSilentToggleController" /> settings:controller="com.android.settings.notification.LockScreenNotificationShowSilentController" />
<com.android.settingslib.RestrictedSwitchPreference <com.android.settingslib.RestrictedSwitchPreference
android:key="lock_screen_notification_show_sensitive_toggle" android:key="lock_screen_notification_show_sensitive_toggle"
android:title="@string/lock_screen_notification_hide_sensitive_content_title" android:title="@string/lock_screen_notification_show_sensitive_content_title"
settings:controller="com.android.settings.notification.LockScreenNotificationShowSensitiveToggleController" /> settings:controller="com.android.settings.notification.LockScreenNotificationShowSensitiveController" />
<com.android.settingslib.RestrictedSwitchPreference <com.android.settingslib.RestrictedSwitchPreference
android:key="work_profile_show_sensitive_notif_toggle" android:key="work_profile_show_sensitive_notif_toggle"
android:title="@string/lock_screen_notification_hide_sensitive_work_content_title" android:title="@string/lock_screen_notification_show_sensitive_work_content_title"
settings:controller="com.android.settings.notification.LockScreenNotificationShowSensitiveToggleController" /> settings:controller="com.android.settings.notification.LockScreenNotificationShowSensitiveController" />
</PreferenceCategory> </PreferenceCategory>

View File

@@ -39,7 +39,7 @@ import com.android.settings.core.TogglePreferenceController;
* Controls the toggle that determines whether to hide seen notifications from the lock screen. * 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 * Toggle for setting: Settings.Secure.LOCK_SCREEN_SHOW_ONLY_UNSEEN_NOTIFICATIONS
*/ */
public class LockScreenNotificationHideSeenToggleController extends TogglePreferenceController public class LockScreenNotificationShowSeenController extends TogglePreferenceController
implements LifecycleEventObserver { implements LifecycleEventObserver {
private static final int UNSET = 0; 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) { @NonNull String preferenceKey) {
super(context, preferenceKey); super(context, preferenceKey);
mContentResolver = context.getContentResolver(); mContentResolver = context.getContentResolver();
@@ -90,7 +90,7 @@ public class LockScreenNotificationHideSeenToggleController extends TogglePrefer
@Override @Override
public void updateState(@NonNull Preference preference) { public void updateState(@NonNull Preference preference) {
super.updateState(preference); super.updateState(preference);
setChecked(lockScreenShowOnlyUnseenNotifications()); setChecked(lockScreenShowSeenNotifications());
preference.setVisible(isAvailable()); preference.setVisible(isAvailable());
} }
@@ -115,18 +115,18 @@ public class LockScreenNotificationHideSeenToggleController extends TogglePrefer
@Override @Override
public boolean isChecked() { public boolean isChecked() {
return lockScreenShowOnlyUnseenNotifications(); return lockScreenShowSeenNotifications();
} }
private boolean lockScreenShowOnlyUnseenNotifications() { private boolean lockScreenShowSeenNotifications() {
return Settings.Secure.getInt(mContext.getContentResolver(), 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 @Override
public boolean setChecked(boolean isChecked) { public boolean setChecked(boolean isChecked) {
return Settings.Secure.putInt(mContext.getContentResolver(), 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 @Override

View File

@@ -53,7 +53,7 @@ import java.util.List;
* when locked. * when locked.
* Toggle for: Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS * Toggle for: Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS
*/ */
public class LockScreenNotificationShowSensitiveToggleController public class LockScreenNotificationShowSensitiveController
extends TogglePreferenceController implements LifecycleEventObserver { extends TogglePreferenceController implements LifecycleEventObserver {
private static final int ON = 1; 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) { @NonNull String preferenceKey) {
super(context, preferenceKey); super(context, preferenceKey);
mContentResolver = context.getContentResolver(); mContentResolver = context.getContentResolver();
@@ -145,7 +145,7 @@ public class LockScreenNotificationShowSensitiveToggleController
@Override @Override
public void updateState(@Nullable Preference preference) { public void updateState(@Nullable Preference preference) {
if (preference == null) return; if (preference == null) return;
setChecked(showSensitiveContentOnlyWhenUnlocked()); setChecked(showSensitiveContentWhenLocked());
preference.setVisible(isAvailable()); preference.setVisible(isAvailable());
} }
@@ -187,15 +187,15 @@ public class LockScreenNotificationShowSensitiveToggleController
@Override @Override
public boolean isChecked() { public boolean isChecked() {
return showSensitiveContentOnlyWhenUnlocked(); return showSensitiveContentWhenLocked();
} }
private boolean showSensitiveContentOnlyWhenUnlocked() { private boolean showSensitiveContentWhenLocked() {
int userId = getUserId(); int userId = getUserId();
if (!isLockScreenSecure()) return false; if (!isLockScreenSecure()) return true;
if (getEnforcedAdmin(userId) != null) return true; if (getEnforcedAdmin(userId) != null) return false;
return Settings.Secure.getIntForUser(mContext.getContentResolver(), 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 @Override
@@ -203,7 +203,7 @@ public class LockScreenNotificationShowSensitiveToggleController
return Settings.Secure.putIntForUser( return Settings.Secure.putIntForUser(
mContext.getContentResolver(), mContext.getContentResolver(),
Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS,
(isChecked ? OFF : ON), getUserId() (isChecked ? ON : OFF), getUserId()
); );
} }

View File

@@ -38,7 +38,7 @@ import com.android.settings.core.TogglePreferenceController;
* Controls the toggle that determines whether to show silent notifications when screen locked. * Controls the toggle that determines whether to show silent notifications when screen locked.
* Toggle for: Settings.Secure.LOCK_SCREEN_SHOW_SILENT_NOTIFICATIONS * Toggle for: Settings.Secure.LOCK_SCREEN_SHOW_SILENT_NOTIFICATIONS
*/ */
public class LockScreenNotificationHideSilentToggleController extends TogglePreferenceController public class LockScreenNotificationShowSilentController extends TogglePreferenceController
implements LifecycleEventObserver { implements LifecycleEventObserver {
private static final int ON = 1; 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) { @NonNull String preferenceKey) {
super(context, preferenceKey); super(context, preferenceKey);
mContentResolver = context.getContentResolver(); mContentResolver = context.getContentResolver();
@@ -89,13 +89,13 @@ public class LockScreenNotificationHideSilentToggleController extends TogglePref
@Override @Override
public void updateState(@NonNull Preference preference) { public void updateState(@NonNull Preference preference) {
super.updateState(preference); super.updateState(preference);
setChecked(hideSilentNotificationsWhenLocked()); setChecked(showSilentNotificationsWhenLocked());
preference.setVisible(isAvailable()); preference.setVisible(isAvailable());
} }
private boolean hideSilentNotificationsWhenLocked() { private boolean showSilentNotificationsWhenLocked() {
return Settings.Secure.getInt(mContext.getContentResolver(), 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 @Override
@@ -116,13 +116,13 @@ public class LockScreenNotificationHideSilentToggleController extends TogglePref
@Override @Override
public boolean isChecked() { public boolean isChecked() {
return hideSilentNotificationsWhenLocked(); return showSilentNotificationsWhenLocked();
} }
@Override @Override
public boolean setChecked(boolean isChecked) { public boolean setChecked(boolean isChecked) {
return Settings.Secure.putInt(mContext.getContentResolver(), 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 @Override

View File

@@ -63,7 +63,7 @@ import java.util.Arrays;
ShadowUtils.class, ShadowUtils.class,
ShadowRestrictedLockUtilsInternal.class, ShadowRestrictedLockUtilsInternal.class,
}) })
public class LockScreenNotificationShowSensitiveToggleControllerTest { public class LockScreenNotificationShowSensitiveControllerTest {
@Mock @Mock
private DevicePolicyManager mDpm; private DevicePolicyManager mDpm;
@@ -79,8 +79,8 @@ public class LockScreenNotificationShowSensitiveToggleControllerTest {
private Context mMockContext; private Context mMockContext;
private Context mContext; private Context mContext;
private LockScreenNotificationShowSensitiveToggleController mController; private LockScreenNotificationShowSensitiveController mController;
private LockScreenNotificationShowSensitiveToggleController mWorkController; private LockScreenNotificationShowSensitiveController mWorkController;
private RestrictedSwitchPreference mPreference; private RestrictedSwitchPreference mPreference;
private RestrictedSwitchPreference mWorkPreference; private RestrictedSwitchPreference mWorkPreference;
@@ -98,9 +98,9 @@ public class LockScreenNotificationShowSensitiveToggleControllerTest {
when(mMockContext.getSystemService(KeyguardManager.class)).thenReturn(mKm); when(mMockContext.getSystemService(KeyguardManager.class)).thenReturn(mKm);
when(mUm.getProfiles(anyInt())).thenReturn(Arrays.asList(new UserInfo(0, "", 0))); when(mUm.getProfiles(anyInt())).thenReturn(Arrays.asList(new UserInfo(0, "", 0)));
mController = new LockScreenNotificationShowSensitiveToggleController( mController = new LockScreenNotificationShowSensitiveController(
mMockContext, mMockContext,
LockScreenNotificationShowSensitiveToggleController.KEY_SHOW_SENSITIVE LockScreenNotificationShowSensitiveController.KEY_SHOW_SENSITIVE
); );
mPreference = new RestrictedSwitchPreference(mContext); mPreference = new RestrictedSwitchPreference(mContext);
mPreference.setKey(mController.getPreferenceKey()); mPreference.setKey(mController.getPreferenceKey());
@@ -110,9 +110,9 @@ public class LockScreenNotificationShowSensitiveToggleControllerTest {
when(mUm.getProfiles(anyInt())).thenReturn(Arrays.asList( when(mUm.getProfiles(anyInt())).thenReturn(Arrays.asList(
new UserInfo(5, "", 0), new UserInfo(5, "", 0),
new UserInfo(10, "", UserInfo.FLAG_MANAGED_PROFILE | UserInfo.FLAG_PROFILE))); new UserInfo(10, "", UserInfo.FLAG_MANAGED_PROFILE | UserInfo.FLAG_PROFILE)));
mWorkController = new LockScreenNotificationShowSensitiveToggleController( mWorkController = new LockScreenNotificationShowSensitiveController(
mMockContext, mMockContext,
LockScreenNotificationShowSensitiveToggleController.KEY_SHOW_SENSITIVE_WORK_PROFILE LockScreenNotificationShowSensitiveController.KEY_SHOW_SENSITIVE_WORK_PROFILE
); );
mWorkPreference = new RestrictedSwitchPreference(mContext); mWorkPreference = new RestrictedSwitchPreference(mContext);
mWorkPreference.setKey(mWorkController.getPreferenceKey()); mWorkPreference.setKey(mWorkController.getPreferenceKey());
@@ -150,12 +150,12 @@ public class LockScreenNotificationShowSensitiveToggleControllerTest {
// reset controllers with no work profile // reset controllers with no work profile
when(mUm.getProfiles(anyInt())).thenReturn(Arrays.asList( when(mUm.getProfiles(anyInt())).thenReturn(Arrays.asList(
new UserInfo(UserHandle.myUserId(), "", 0))); new UserInfo(UserHandle.myUserId(), "", 0)));
mWorkController = new LockScreenNotificationShowSensitiveToggleController( mWorkController = new LockScreenNotificationShowSensitiveController(
mMockContext, mMockContext,
LockScreenNotificationShowSensitiveToggleController.KEY_SHOW_SENSITIVE_WORK_PROFILE LockScreenNotificationShowSensitiveController.KEY_SHOW_SENSITIVE_WORK_PROFILE
); );
mController = new LockScreenNotificationShowSensitiveToggleController(mMockContext, mController = new LockScreenNotificationShowSensitiveController(mMockContext,
LockScreenNotificationShowSensitiveToggleController.KEY_SHOW_SENSITIVE); LockScreenNotificationShowSensitiveController.KEY_SHOW_SENSITIVE);
// should otherwise show // should otherwise show
when(mLockPatternUtils.isSecure(anyInt())).thenReturn(true); when(mLockPatternUtils.isSecure(anyInt())).thenReturn(true);
@@ -271,13 +271,13 @@ public class LockScreenNotificationShowSensitiveToggleControllerTest {
LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS,
0, 0); 0, 0);
assertThat(mController.isChecked()).isTrue(); assertThat(mController.isChecked()).isFalse();
Settings.Secure.putIntForUser(mContext.getContentResolver(), Settings.Secure.putIntForUser(mContext.getContentResolver(),
LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS,
1, 0); 1, 0);
assertThat(mController.isChecked()).isFalse(); assertThat(mController.isChecked()).isTrue();
} }
@Test @Test
@@ -287,13 +287,13 @@ public class LockScreenNotificationShowSensitiveToggleControllerTest {
LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS,
0, 10); 0, 10);
assertThat(mWorkController.isChecked()).isTrue(); assertThat(mWorkController.isChecked()).isFalse();
Settings.Secure.putIntForUser(mContext.getContentResolver(), Settings.Secure.putIntForUser(mContext.getContentResolver(),
LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS,
1, 10); 1, 10);
assertThat(mWorkController.isChecked()).isFalse(); assertThat(mWorkController.isChecked()).isTrue();
} }
@Test @Test
@@ -305,7 +305,7 @@ public class LockScreenNotificationShowSensitiveToggleControllerTest {
ShadowRestrictedLockUtilsInternal.setKeyguardDisabledFeatures( ShadowRestrictedLockUtilsInternal.setKeyguardDisabledFeatures(
KEYGUARD_DISABLE_SECURE_NOTIFICATIONS); KEYGUARD_DISABLE_SECURE_NOTIFICATIONS);
assertThat(mController.isChecked()).isFalse(); assertThat(mController.isChecked()).isTrue();
} }
@Test @Test
@@ -317,7 +317,7 @@ public class LockScreenNotificationShowSensitiveToggleControllerTest {
mController.setChecked(false); mController.setChecked(false);
assertThat(Settings.Secure.getIntForUser( assertThat(Settings.Secure.getIntForUser(
mContext.getContentResolver(), LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 0)) mContext.getContentResolver(), LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 0))
.isEqualTo(1); .isEqualTo(0);
} }
@Test @Test
@@ -329,7 +329,7 @@ public class LockScreenNotificationShowSensitiveToggleControllerTest {
mWorkController.setChecked(true); mWorkController.setChecked(true);
assertThat(Settings.Secure.getIntForUser( assertThat(Settings.Secure.getIntForUser(
mContext.getContentResolver(), LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 10)) mContext.getContentResolver(), LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 10))
.isEqualTo(0); .isEqualTo(1);
} }
@Test @Test
@@ -345,10 +345,10 @@ public class LockScreenNotificationShowSensitiveToggleControllerTest {
mWorkController.setChecked(true); mWorkController.setChecked(true);
assertThat(Settings.Secure.getIntForUser( assertThat(Settings.Secure.getIntForUser(
mContext.getContentResolver(), LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 10)) mContext.getContentResolver(), LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 10))
.isEqualTo(0); .isEqualTo(1);
assertThat(Settings.Secure.getIntForUser( assertThat(Settings.Secure.getIntForUser(
mContext.getContentResolver(), LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 0)) mContext.getContentResolver(), LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 0))
.isEqualTo(0); .isEqualTo(1);
} }
} }