Loading src/com/android/settings/safetycenter/LockScreenSafetySource.java +72 −70 Original line number Original line Diff line number Diff line Loading @@ -46,11 +46,11 @@ public final class LockScreenSafetySource { private static final int REQUEST_CODE_SCREEN_LOCK = 1; private static final int REQUEST_CODE_SCREEN_LOCK = 1; private static final int REQUEST_CODE_SCREEN_LOCK_SETTINGS = 2; private static final int REQUEST_CODE_SCREEN_LOCK_SETTINGS = 2; private LockScreenSafetySource() { private LockScreenSafetySource() {} } /** Sets lock screen safety data for Safety Center. */ /** Sets lock screen safety data for Safety Center. */ public static void setSafetySourceData(Context context, public static void setSafetySourceData( Context context, ScreenLockPreferenceDetailsUtils screenLockPreferenceDetailsUtils, ScreenLockPreferenceDetailsUtils screenLockPreferenceDetailsUtils, SafetyEvent safetyEvent) { SafetyEvent safetyEvent) { if (!SafetyCenterManagerWrapper.get().isEnabled(context)) { if (!SafetyCenterManagerWrapper.get().isEnabled(context)) { Loading @@ -63,59 +63,61 @@ public final class LockScreenSafetySource { } } if (!screenLockPreferenceDetailsUtils.isAvailable()) { if (!screenLockPreferenceDetailsUtils.isAvailable()) { SafetyCenterManagerWrapper.get().setSafetySourceData( SafetyCenterManagerWrapper.get() context, .setSafetySourceData( SAFETY_SOURCE_ID, context, SAFETY_SOURCE_ID, /* safetySourceData= */ null, safetyEvent); /* safetySourceData= */ null, safetyEvent ); return; return; } } final int userId = UserHandle.myUserId(); final int userId = UserHandle.myUserId(); final RestrictedLockUtils.EnforcedAdmin admin = RestrictedLockUtilsInternal final RestrictedLockUtils.EnforcedAdmin admin = .checkIfPasswordQualityIsSet(context, userId); RestrictedLockUtilsInternal.checkIfPasswordQualityIsSet(context, userId); final PendingIntent pendingIntent = createPendingIntent(context, final PendingIntent pendingIntent = createPendingIntent( context, screenLockPreferenceDetailsUtils.getLaunchChooseLockGenericFragmentIntent( screenLockPreferenceDetailsUtils.getLaunchChooseLockGenericFragmentIntent( SettingsEnums.SAFETY_CENTER), REQUEST_CODE_SCREEN_LOCK); SettingsEnums.SAFETY_CENTER), final IconAction gearMenuIconAction = createGearMenuIconAction(context, REQUEST_CODE_SCREEN_LOCK); screenLockPreferenceDetailsUtils); final IconAction gearMenuIconAction = final boolean enabled = createGearMenuIconAction(context, screenLockPreferenceDetailsUtils); final boolean lockScreenAllowedByAdmin = !screenLockPreferenceDetailsUtils.isPasswordQualityManaged(userId, admin); !screenLockPreferenceDetailsUtils.isPasswordQualityManaged(userId, admin); final boolean isLockPatternSecure = screenLockPreferenceDetailsUtils.isLockPatternSecure(); final boolean isLockPatternSecure = screenLockPreferenceDetailsUtils.isLockPatternSecure(); final int severityLevel = enabled final int severityLevel = lockScreenAllowedByAdmin ? isLockPatternSecure ? isLockPatternSecure ? SafetySourceData.SEVERITY_LEVEL_INFORMATION ? SafetySourceData.SEVERITY_LEVEL_INFORMATION : SafetySourceData.SEVERITY_LEVEL_RECOMMENDATION : SafetySourceData.SEVERITY_LEVEL_RECOMMENDATION : SafetySourceData.SEVERITY_LEVEL_UNSPECIFIED; : SafetySourceData.SEVERITY_LEVEL_UNSPECIFIED; final SafetySourceStatus status = final SafetySourceStatus status = new SafetySourceStatus.Builder( new SafetySourceStatus.Builder( context.getString(R.string.unlock_set_unlock_launch_picker_title), context.getString(R.string.unlock_set_unlock_launch_picker_title), screenLockPreferenceDetailsUtils.getSummary(UserHandle.myUserId()), lockScreenAllowedByAdmin ? screenLockPreferenceDetailsUtils.getSummary( UserHandle.myUserId()) : context.getString(R.string.disabled_by_policy_title), severityLevel) severityLevel) .setPendingIntent(pendingIntent) .setPendingIntent(lockScreenAllowedByAdmin ? pendingIntent : null) .setEnabled(enabled) .setEnabled(lockScreenAllowedByAdmin) .setIconAction(gearMenuIconAction).build(); .setIconAction(lockScreenAllowedByAdmin ? gearMenuIconAction : null) .build(); final SafetySourceData.Builder safetySourceDataBuilder = final SafetySourceData.Builder safetySourceDataBuilder = new SafetySourceData.Builder().setStatus(status); new SafetySourceData.Builder().setStatus(status); if (enabled && !isLockPatternSecure) { if (lockScreenAllowedByAdmin && !isLockPatternSecure) { safetySourceDataBuilder.addIssue(createNoScreenLockIssue(context, pendingIntent)); safetySourceDataBuilder.addIssue(createNoScreenLockIssue(context, pendingIntent)); } } final SafetySourceData safetySourceData = safetySourceDataBuilder.build(); final SafetySourceData safetySourceData = safetySourceDataBuilder.build(); SafetyCenterManagerWrapper.get().setSafetySourceData( SafetyCenterManagerWrapper.get() context, .setSafetySourceData(context, SAFETY_SOURCE_ID, safetySourceData, safetyEvent); SAFETY_SOURCE_ID, safetySourceData, safetyEvent ); } } /** Notifies Safety Center of a change in lock screen settings. */ /** Notifies Safety Center of a change in lock screen settings. */ public static void onLockScreenChange(Context context) { public static void onLockScreenChange(Context context) { setSafetySourceData( setSafetySourceData( context, new ScreenLockPreferenceDetailsUtils(context), context, new ScreenLockPreferenceDetailsUtils(context), new SafetyEvent.Builder(SAFETY_EVENT_TYPE_SOURCE_STATE_CHANGED).build()); new SafetyEvent.Builder(SAFETY_EVENT_TYPE_SOURCE_STATE_CHANGED).build()); // Also send refreshed safety center data for biometrics, since changing lockscreen settings // Also send refreshed safety center data for biometrics, since changing lockscreen settings Loading @@ -123,33 +125,33 @@ public final class LockScreenSafetySource { BiometricsSafetySource.onBiometricsChanged(context); BiometricsSafetySource.onBiometricsChanged(context); } } private static IconAction createGearMenuIconAction(Context context, private static IconAction createGearMenuIconAction( ScreenLockPreferenceDetailsUtils screenLockPreferenceDetailsUtils) { Context context, ScreenLockPreferenceDetailsUtils screenLockPreferenceDetailsUtils) { return screenLockPreferenceDetailsUtils.shouldShowGearMenu() ? new IconAction( return screenLockPreferenceDetailsUtils.shouldShowGearMenu() ? new IconAction( IconAction.ICON_TYPE_GEAR, IconAction.ICON_TYPE_GEAR, createPendingIntent(context, createPendingIntent( context, screenLockPreferenceDetailsUtils.getLaunchScreenLockSettingsIntent( screenLockPreferenceDetailsUtils.getLaunchScreenLockSettingsIntent( SettingsEnums.SAFETY_CENTER), SettingsEnums.SAFETY_CENTER), REQUEST_CODE_SCREEN_LOCK_SETTINGS)) REQUEST_CODE_SCREEN_LOCK_SETTINGS)) : null; : null; } } private static PendingIntent createPendingIntent(Context context, Intent intent, private static PendingIntent createPendingIntent( int requestCode) { Context context, Intent intent, int requestCode) { return PendingIntent return PendingIntent.getActivity( .getActivity( context, requestCode, intent, PendingIntent.FLAG_IMMUTABLE); context, requestCode, intent, PendingIntent.FLAG_IMMUTABLE); } } private static SafetySourceIssue createNoScreenLockIssue(Context context, private static SafetySourceIssue createNoScreenLockIssue( PendingIntent pendingIntent) { Context context, PendingIntent pendingIntent) { final SafetySourceIssue.Action action = new SafetySourceIssue.Action.Builder( final SafetySourceIssue.Action action = new SafetySourceIssue.Action.Builder( SET_SCREEN_LOCK_ACTION_ID, SET_SCREEN_LOCK_ACTION_ID, context.getString(R.string.no_screen_lock_issue_action_label), context.getString(R.string.no_screen_lock_issue_action_label), pendingIntent).build(); pendingIntent) .build(); // Custom notification deliberately has zero actions // Custom notification deliberately has zero actions final SafetySourceIssue.Notification customNotification = final SafetySourceIssue.Notification customNotification = new SafetySourceIssue.Notification.Builder( new SafetySourceIssue.Notification.Builder( Loading tests/unit/src/com/android/settings/safetycenter/LockScreenSafetySourceTest.java +164 −106 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
src/com/android/settings/safetycenter/LockScreenSafetySource.java +72 −70 Original line number Original line Diff line number Diff line Loading @@ -46,11 +46,11 @@ public final class LockScreenSafetySource { private static final int REQUEST_CODE_SCREEN_LOCK = 1; private static final int REQUEST_CODE_SCREEN_LOCK = 1; private static final int REQUEST_CODE_SCREEN_LOCK_SETTINGS = 2; private static final int REQUEST_CODE_SCREEN_LOCK_SETTINGS = 2; private LockScreenSafetySource() { private LockScreenSafetySource() {} } /** Sets lock screen safety data for Safety Center. */ /** Sets lock screen safety data for Safety Center. */ public static void setSafetySourceData(Context context, public static void setSafetySourceData( Context context, ScreenLockPreferenceDetailsUtils screenLockPreferenceDetailsUtils, ScreenLockPreferenceDetailsUtils screenLockPreferenceDetailsUtils, SafetyEvent safetyEvent) { SafetyEvent safetyEvent) { if (!SafetyCenterManagerWrapper.get().isEnabled(context)) { if (!SafetyCenterManagerWrapper.get().isEnabled(context)) { Loading @@ -63,59 +63,61 @@ public final class LockScreenSafetySource { } } if (!screenLockPreferenceDetailsUtils.isAvailable()) { if (!screenLockPreferenceDetailsUtils.isAvailable()) { SafetyCenterManagerWrapper.get().setSafetySourceData( SafetyCenterManagerWrapper.get() context, .setSafetySourceData( SAFETY_SOURCE_ID, context, SAFETY_SOURCE_ID, /* safetySourceData= */ null, safetyEvent); /* safetySourceData= */ null, safetyEvent ); return; return; } } final int userId = UserHandle.myUserId(); final int userId = UserHandle.myUserId(); final RestrictedLockUtils.EnforcedAdmin admin = RestrictedLockUtilsInternal final RestrictedLockUtils.EnforcedAdmin admin = .checkIfPasswordQualityIsSet(context, userId); RestrictedLockUtilsInternal.checkIfPasswordQualityIsSet(context, userId); final PendingIntent pendingIntent = createPendingIntent(context, final PendingIntent pendingIntent = createPendingIntent( context, screenLockPreferenceDetailsUtils.getLaunchChooseLockGenericFragmentIntent( screenLockPreferenceDetailsUtils.getLaunchChooseLockGenericFragmentIntent( SettingsEnums.SAFETY_CENTER), REQUEST_CODE_SCREEN_LOCK); SettingsEnums.SAFETY_CENTER), final IconAction gearMenuIconAction = createGearMenuIconAction(context, REQUEST_CODE_SCREEN_LOCK); screenLockPreferenceDetailsUtils); final IconAction gearMenuIconAction = final boolean enabled = createGearMenuIconAction(context, screenLockPreferenceDetailsUtils); final boolean lockScreenAllowedByAdmin = !screenLockPreferenceDetailsUtils.isPasswordQualityManaged(userId, admin); !screenLockPreferenceDetailsUtils.isPasswordQualityManaged(userId, admin); final boolean isLockPatternSecure = screenLockPreferenceDetailsUtils.isLockPatternSecure(); final boolean isLockPatternSecure = screenLockPreferenceDetailsUtils.isLockPatternSecure(); final int severityLevel = enabled final int severityLevel = lockScreenAllowedByAdmin ? isLockPatternSecure ? isLockPatternSecure ? SafetySourceData.SEVERITY_LEVEL_INFORMATION ? SafetySourceData.SEVERITY_LEVEL_INFORMATION : SafetySourceData.SEVERITY_LEVEL_RECOMMENDATION : SafetySourceData.SEVERITY_LEVEL_RECOMMENDATION : SafetySourceData.SEVERITY_LEVEL_UNSPECIFIED; : SafetySourceData.SEVERITY_LEVEL_UNSPECIFIED; final SafetySourceStatus status = final SafetySourceStatus status = new SafetySourceStatus.Builder( new SafetySourceStatus.Builder( context.getString(R.string.unlock_set_unlock_launch_picker_title), context.getString(R.string.unlock_set_unlock_launch_picker_title), screenLockPreferenceDetailsUtils.getSummary(UserHandle.myUserId()), lockScreenAllowedByAdmin ? screenLockPreferenceDetailsUtils.getSummary( UserHandle.myUserId()) : context.getString(R.string.disabled_by_policy_title), severityLevel) severityLevel) .setPendingIntent(pendingIntent) .setPendingIntent(lockScreenAllowedByAdmin ? pendingIntent : null) .setEnabled(enabled) .setEnabled(lockScreenAllowedByAdmin) .setIconAction(gearMenuIconAction).build(); .setIconAction(lockScreenAllowedByAdmin ? gearMenuIconAction : null) .build(); final SafetySourceData.Builder safetySourceDataBuilder = final SafetySourceData.Builder safetySourceDataBuilder = new SafetySourceData.Builder().setStatus(status); new SafetySourceData.Builder().setStatus(status); if (enabled && !isLockPatternSecure) { if (lockScreenAllowedByAdmin && !isLockPatternSecure) { safetySourceDataBuilder.addIssue(createNoScreenLockIssue(context, pendingIntent)); safetySourceDataBuilder.addIssue(createNoScreenLockIssue(context, pendingIntent)); } } final SafetySourceData safetySourceData = safetySourceDataBuilder.build(); final SafetySourceData safetySourceData = safetySourceDataBuilder.build(); SafetyCenterManagerWrapper.get().setSafetySourceData( SafetyCenterManagerWrapper.get() context, .setSafetySourceData(context, SAFETY_SOURCE_ID, safetySourceData, safetyEvent); SAFETY_SOURCE_ID, safetySourceData, safetyEvent ); } } /** Notifies Safety Center of a change in lock screen settings. */ /** Notifies Safety Center of a change in lock screen settings. */ public static void onLockScreenChange(Context context) { public static void onLockScreenChange(Context context) { setSafetySourceData( setSafetySourceData( context, new ScreenLockPreferenceDetailsUtils(context), context, new ScreenLockPreferenceDetailsUtils(context), new SafetyEvent.Builder(SAFETY_EVENT_TYPE_SOURCE_STATE_CHANGED).build()); new SafetyEvent.Builder(SAFETY_EVENT_TYPE_SOURCE_STATE_CHANGED).build()); // Also send refreshed safety center data for biometrics, since changing lockscreen settings // Also send refreshed safety center data for biometrics, since changing lockscreen settings Loading @@ -123,33 +125,33 @@ public final class LockScreenSafetySource { BiometricsSafetySource.onBiometricsChanged(context); BiometricsSafetySource.onBiometricsChanged(context); } } private static IconAction createGearMenuIconAction(Context context, private static IconAction createGearMenuIconAction( ScreenLockPreferenceDetailsUtils screenLockPreferenceDetailsUtils) { Context context, ScreenLockPreferenceDetailsUtils screenLockPreferenceDetailsUtils) { return screenLockPreferenceDetailsUtils.shouldShowGearMenu() ? new IconAction( return screenLockPreferenceDetailsUtils.shouldShowGearMenu() ? new IconAction( IconAction.ICON_TYPE_GEAR, IconAction.ICON_TYPE_GEAR, createPendingIntent(context, createPendingIntent( context, screenLockPreferenceDetailsUtils.getLaunchScreenLockSettingsIntent( screenLockPreferenceDetailsUtils.getLaunchScreenLockSettingsIntent( SettingsEnums.SAFETY_CENTER), SettingsEnums.SAFETY_CENTER), REQUEST_CODE_SCREEN_LOCK_SETTINGS)) REQUEST_CODE_SCREEN_LOCK_SETTINGS)) : null; : null; } } private static PendingIntent createPendingIntent(Context context, Intent intent, private static PendingIntent createPendingIntent( int requestCode) { Context context, Intent intent, int requestCode) { return PendingIntent return PendingIntent.getActivity( .getActivity( context, requestCode, intent, PendingIntent.FLAG_IMMUTABLE); context, requestCode, intent, PendingIntent.FLAG_IMMUTABLE); } } private static SafetySourceIssue createNoScreenLockIssue(Context context, private static SafetySourceIssue createNoScreenLockIssue( PendingIntent pendingIntent) { Context context, PendingIntent pendingIntent) { final SafetySourceIssue.Action action = new SafetySourceIssue.Action.Builder( final SafetySourceIssue.Action action = new SafetySourceIssue.Action.Builder( SET_SCREEN_LOCK_ACTION_ID, SET_SCREEN_LOCK_ACTION_ID, context.getString(R.string.no_screen_lock_issue_action_label), context.getString(R.string.no_screen_lock_issue_action_label), pendingIntent).build(); pendingIntent) .build(); // Custom notification deliberately has zero actions // Custom notification deliberately has zero actions final SafetySourceIssue.Notification customNotification = final SafetySourceIssue.Notification customNotification = new SafetySourceIssue.Notification.Builder( new SafetySourceIssue.Notification.Builder( Loading
tests/unit/src/com/android/settings/safetycenter/LockScreenSafetySourceTest.java +164 −106 File changed.Preview size limit exceeded, changes collapsed. Show changes