Loading src/com/android/settings/notification/LockScreenNotificationShowSensitiveController.java +15 −3 Original line number Diff line number Diff line Loading @@ -81,6 +81,13 @@ public class LockScreenNotificationShowSensitiveController public LockScreenNotificationShowSensitiveController(@NonNull Context context, @NonNull String preferenceKey) { super(context, preferenceKey); // This prevents unexpected controller usages. if (!KEY_SHOW_SENSITIVE.equals(preferenceKey) && !KEY_SHOW_SENSITIVE_WORK_PROFILE.equals(preferenceKey)) { throw new IllegalArgumentException("Invalid preference key: " + preferenceKey); } mContentResolver = context.getContentResolver(); mUserManager = context.getSystemService(UserManager.class); Loading Loading @@ -138,13 +145,18 @@ public class LockScreenNotificationShowSensitiveController } private int getUserId() { return KEY_SHOW_SENSITIVE.equals(getPreferenceKey()) ? UserHandle.myUserId() : mWorkProfileUserId; return switch (getPreferenceKey()) { case KEY_SHOW_SENSITIVE -> UserHandle.myUserId(); case KEY_SHOW_SENSITIVE_WORK_PROFILE -> mWorkProfileUserId; default -> throw new IllegalArgumentException( "Invalid preference key: " + getPreferenceKey()); }; } @Override public void updateState(@Nullable Preference preference) { if (preference == null) return; super.updateState(preference); setChecked(showSensitiveContentWhenLocked()); preference.setVisible(isAvailable()); } Loading Loading @@ -195,7 +207,7 @@ public class LockScreenNotificationShowSensitiveController 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) == ON; Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, ON, userId) != OFF; } @Override Loading tests/robotests/src/com/android/settings/notification/LockScreenNotificationShowSensitiveControllerTest.java +32 −0 Original line number Diff line number Diff line Loading @@ -131,6 +131,14 @@ public class LockScreenNotificationShowSensitiveControllerTest { assertThat(mWorkController.mWorkProfileUserId).isEqualTo(10); } @Test(expected = IllegalArgumentException.class) public void validatePreferenceId() { new LockScreenNotificationShowSensitiveController( mMockContext, "Illegal Key" ); } @Test public void getAvailabilityStatus_noSecureLockscreen() { when(mLockPatternUtils.isSecure(anyInt())).thenReturn(false); Loading Loading @@ -266,34 +274,58 @@ public class LockScreenNotificationShowSensitiveControllerTest { @Test public void isChecked() { // Given: screen is secure when(mLockPatternUtils.isSecure(anyInt())).thenReturn(true); // When: disable LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS // then updateState, this mocks the mWorkController.mContentObserver.onChange() Settings.Secure.putIntForUser(mContext.getContentResolver(), LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 0, 0); mController.updateState(mPreference); // Then: the toggle is unchecked assertThat(mController.isChecked()).isFalse(); assertThat(mPreference.isChecked()).isFalse(); // When: enable LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS // then updateState, this mocks the mWorkController.mContentObserver.onChange() Settings.Secure.putIntForUser(mContext.getContentResolver(), LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 1, 0); mController.updateState(mPreference); // Then: the toggle is checked assertThat(mController.isChecked()).isTrue(); assertThat(mPreference.isChecked()).isTrue(); } @Test public void isChecked_work() { // Given: screen is secure when(mLockPatternUtils.isSecure(anyInt())).thenReturn(true); // When: disable LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS for work profile // then updateState, this mocks the mWorkController.mContentObserver.onChange() Settings.Secure.putIntForUser(mContext.getContentResolver(), LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 0, 10); mWorkController.updateState(mWorkPreference); // Then: the toggle is unchecked assertThat(mWorkController.isChecked()).isFalse(); assertThat(mWorkPreference.isChecked()).isFalse(); // When: enable LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS for work profile // then updateState, this mocks the mWorkController.mContentObserver.onChange() Settings.Secure.putIntForUser(mContext.getContentResolver(), LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 1, 10); mWorkController.updateState(mWorkPreference); // Then: the toggle is checked assertThat(mWorkController.isChecked()).isTrue(); assertThat(mWorkPreference.isChecked()).isTrue(); } @Test Loading Loading
src/com/android/settings/notification/LockScreenNotificationShowSensitiveController.java +15 −3 Original line number Diff line number Diff line Loading @@ -81,6 +81,13 @@ public class LockScreenNotificationShowSensitiveController public LockScreenNotificationShowSensitiveController(@NonNull Context context, @NonNull String preferenceKey) { super(context, preferenceKey); // This prevents unexpected controller usages. if (!KEY_SHOW_SENSITIVE.equals(preferenceKey) && !KEY_SHOW_SENSITIVE_WORK_PROFILE.equals(preferenceKey)) { throw new IllegalArgumentException("Invalid preference key: " + preferenceKey); } mContentResolver = context.getContentResolver(); mUserManager = context.getSystemService(UserManager.class); Loading Loading @@ -138,13 +145,18 @@ public class LockScreenNotificationShowSensitiveController } private int getUserId() { return KEY_SHOW_SENSITIVE.equals(getPreferenceKey()) ? UserHandle.myUserId() : mWorkProfileUserId; return switch (getPreferenceKey()) { case KEY_SHOW_SENSITIVE -> UserHandle.myUserId(); case KEY_SHOW_SENSITIVE_WORK_PROFILE -> mWorkProfileUserId; default -> throw new IllegalArgumentException( "Invalid preference key: " + getPreferenceKey()); }; } @Override public void updateState(@Nullable Preference preference) { if (preference == null) return; super.updateState(preference); setChecked(showSensitiveContentWhenLocked()); preference.setVisible(isAvailable()); } Loading Loading @@ -195,7 +207,7 @@ public class LockScreenNotificationShowSensitiveController 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) == ON; Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, ON, userId) != OFF; } @Override Loading
tests/robotests/src/com/android/settings/notification/LockScreenNotificationShowSensitiveControllerTest.java +32 −0 Original line number Diff line number Diff line Loading @@ -131,6 +131,14 @@ public class LockScreenNotificationShowSensitiveControllerTest { assertThat(mWorkController.mWorkProfileUserId).isEqualTo(10); } @Test(expected = IllegalArgumentException.class) public void validatePreferenceId() { new LockScreenNotificationShowSensitiveController( mMockContext, "Illegal Key" ); } @Test public void getAvailabilityStatus_noSecureLockscreen() { when(mLockPatternUtils.isSecure(anyInt())).thenReturn(false); Loading Loading @@ -266,34 +274,58 @@ public class LockScreenNotificationShowSensitiveControllerTest { @Test public void isChecked() { // Given: screen is secure when(mLockPatternUtils.isSecure(anyInt())).thenReturn(true); // When: disable LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS // then updateState, this mocks the mWorkController.mContentObserver.onChange() Settings.Secure.putIntForUser(mContext.getContentResolver(), LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 0, 0); mController.updateState(mPreference); // Then: the toggle is unchecked assertThat(mController.isChecked()).isFalse(); assertThat(mPreference.isChecked()).isFalse(); // When: enable LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS // then updateState, this mocks the mWorkController.mContentObserver.onChange() Settings.Secure.putIntForUser(mContext.getContentResolver(), LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 1, 0); mController.updateState(mPreference); // Then: the toggle is checked assertThat(mController.isChecked()).isTrue(); assertThat(mPreference.isChecked()).isTrue(); } @Test public void isChecked_work() { // Given: screen is secure when(mLockPatternUtils.isSecure(anyInt())).thenReturn(true); // When: disable LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS for work profile // then updateState, this mocks the mWorkController.mContentObserver.onChange() Settings.Secure.putIntForUser(mContext.getContentResolver(), LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 0, 10); mWorkController.updateState(mWorkPreference); // Then: the toggle is unchecked assertThat(mWorkController.isChecked()).isFalse(); assertThat(mWorkPreference.isChecked()).isFalse(); // When: enable LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS for work profile // then updateState, this mocks the mWorkController.mContentObserver.onChange() Settings.Secure.putIntForUser(mContext.getContentResolver(), LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 1, 10); mWorkController.updateState(mWorkPreference); // Then: the toggle is checked assertThat(mWorkController.isChecked()).isTrue(); assertThat(mWorkPreference.isChecked()).isTrue(); } @Test Loading