Merge "Allow the LockPatterUtils to be null" into main
This commit is contained in:
committed by
Android (Google) Code Review
commit
ec78150e69
@@ -95,8 +95,7 @@ public final class LockScreenSafetySource {
|
|||||||
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),
|
||||||
lockScreenAllowedByAdmin
|
lockScreenAllowedByAdmin
|
||||||
? screenLockPreferenceDetailsUtils.getSummary(
|
? getScreenLockSummary(screenLockPreferenceDetailsUtils)
|
||||||
UserHandle.myUserId())
|
|
||||||
: context.getString(R.string.disabled_by_policy_title),
|
: context.getString(R.string.disabled_by_policy_title),
|
||||||
severityLevel)
|
severityLevel)
|
||||||
.setPendingIntent(lockScreenAllowedByAdmin ? pendingIntent : null)
|
.setPendingIntent(lockScreenAllowedByAdmin ? pendingIntent : null)
|
||||||
@@ -114,6 +113,12 @@ public final class LockScreenSafetySource {
|
|||||||
.setSafetySourceData(context, SAFETY_SOURCE_ID, safetySourceData, safetyEvent);
|
.setSafetySourceData(context, SAFETY_SOURCE_ID, safetySourceData, safetyEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static String getScreenLockSummary(
|
||||||
|
ScreenLockPreferenceDetailsUtils screenLockPreferenceDetailsUtils) {
|
||||||
|
String summary = screenLockPreferenceDetailsUtils.getSummary(UserHandle.myUserId());
|
||||||
|
return summary != null ? summary : "";
|
||||||
|
}
|
||||||
|
|
||||||
/** 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(
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import android.os.UserHandle;
|
|||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
import android.os.storage.StorageManager;
|
import android.os.storage.StorageManager;
|
||||||
|
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
import androidx.annotation.StringRes;
|
import androidx.annotation.StringRes;
|
||||||
|
|
||||||
import com.android.internal.app.UnlaunchableAppActivity;
|
import com.android.internal.app.UnlaunchableAppActivity;
|
||||||
@@ -43,6 +44,7 @@ public class ScreenLockPreferenceDetailsUtils {
|
|||||||
|
|
||||||
private final int mUserId = UserHandle.myUserId();
|
private final int mUserId = UserHandle.myUserId();
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
|
@Nullable
|
||||||
private final LockPatternUtils mLockPatternUtils;
|
private final LockPatternUtils mLockPatternUtils;
|
||||||
private final int mProfileChallengeUserId;
|
private final int mProfileChallengeUserId;
|
||||||
private final UserManager mUm;
|
private final UserManager mUm;
|
||||||
@@ -85,7 +87,7 @@ public class ScreenLockPreferenceDetailsUtils {
|
|||||||
* Returns whether the lock pattern is secure.
|
* Returns whether the lock pattern is secure.
|
||||||
*/
|
*/
|
||||||
public boolean isLockPatternSecure() {
|
public boolean isLockPatternSecure() {
|
||||||
return mLockPatternUtils.isSecure(mUserId);
|
return mLockPatternUtils != null && mLockPatternUtils.isSecure(mUserId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -148,6 +150,7 @@ public class ScreenLockPreferenceDetailsUtils {
|
|||||||
// profile with unified challenge on FBE-enabled devices. Otherwise, vold would not be
|
// profile with unified challenge on FBE-enabled devices. Otherwise, vold would not be
|
||||||
// able to complete the operation due to the lack of (old) encryption key.
|
// able to complete the operation due to the lack of (old) encryption key.
|
||||||
if (mProfileChallengeUserId != UserHandle.USER_NULL
|
if (mProfileChallengeUserId != UserHandle.USER_NULL
|
||||||
|
&& mLockPatternUtils != null
|
||||||
&& !mLockPatternUtils.isSeparateProfileChallengeEnabled(mProfileChallengeUserId)
|
&& !mLockPatternUtils.isSeparateProfileChallengeEnabled(mProfileChallengeUserId)
|
||||||
&& StorageManager.isFileEncrypted()) {
|
&& StorageManager.isFileEncrypted()) {
|
||||||
if (mUm.isQuietModeEnabled(UserHandle.of(mProfileChallengeUserId))) {
|
if (mUm.isQuietModeEnabled(UserHandle.of(mProfileChallengeUserId))) {
|
||||||
@@ -166,8 +169,12 @@ public class ScreenLockPreferenceDetailsUtils {
|
|||||||
.toIntent();
|
.toIntent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
@StringRes
|
@StringRes
|
||||||
private Integer getSummaryResId(int userId) {
|
private Integer getSummaryResId(int userId) {
|
||||||
|
if (mLockPatternUtils == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
if (!mLockPatternUtils.isSecure(userId)) {
|
if (!mLockPatternUtils.isSecure(userId)) {
|
||||||
if (userId == mProfileChallengeUserId
|
if (userId == mProfileChallengeUserId
|
||||||
|| mLockPatternUtils.isLockScreenDisabled(userId)) {
|
|| mLockPatternUtils.isLockScreenDisabled(userId)) {
|
||||||
|
|||||||
@@ -78,6 +78,7 @@ public class ScreenLockPreferenceDetailsUtilsTest {
|
|||||||
private StorageManager mStorageManager;
|
private StorageManager mStorageManager;
|
||||||
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
|
private FakeFeatureFactory mFeatureFactory;
|
||||||
|
|
||||||
private ScreenLockPreferenceDetailsUtils mScreenLockPreferenceDetailsUtils;
|
private ScreenLockPreferenceDetailsUtils mScreenLockPreferenceDetailsUtils;
|
||||||
|
|
||||||
@@ -95,8 +96,8 @@ public class ScreenLockPreferenceDetailsUtilsTest {
|
|||||||
doNothing().when(mContext).startActivity(any());
|
doNothing().when(mContext).startActivity(any());
|
||||||
when(mUserManager.getProfileIdsWithDisabled(anyInt())).thenReturn(new int[]{});
|
when(mUserManager.getProfileIdsWithDisabled(anyInt())).thenReturn(new int[]{});
|
||||||
|
|
||||||
final FakeFeatureFactory featureFactory = FakeFeatureFactory.setupForTest();
|
mFeatureFactory = FakeFeatureFactory.setupForTest();
|
||||||
when(featureFactory.securityFeatureProvider.getLockPatternUtils(mContext))
|
when(mFeatureFactory.securityFeatureProvider.getLockPatternUtils(mContext))
|
||||||
.thenReturn(mLockPatternUtils);
|
.thenReturn(mLockPatternUtils);
|
||||||
|
|
||||||
mScreenLockPreferenceDetailsUtils = new ScreenLockPreferenceDetailsUtils(mContext);
|
mScreenLockPreferenceDetailsUtils = new ScreenLockPreferenceDetailsUtils(mContext);
|
||||||
@@ -230,6 +231,15 @@ public class ScreenLockPreferenceDetailsUtilsTest {
|
|||||||
assertNull(mScreenLockPreferenceDetailsUtils.getSummary(USER_ID));
|
assertNull(mScreenLockPreferenceDetailsUtils.getSummary(USER_ID));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getSummary_noLockPatternUtils_shouldReturnNull() {
|
||||||
|
when(mFeatureFactory.securityFeatureProvider.getLockPatternUtils(mContext))
|
||||||
|
.thenReturn(null);
|
||||||
|
mScreenLockPreferenceDetailsUtils = new ScreenLockPreferenceDetailsUtils(mContext);
|
||||||
|
|
||||||
|
assertNull(mScreenLockPreferenceDetailsUtils.getSummary(USER_ID));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isPasswordQualityManaged_withoutAdmin_shouldReturnFalse() {
|
public void isPasswordQualityManaged_withoutAdmin_shouldReturnFalse() {
|
||||||
final RestrictedLockUtils.EnforcedAdmin admin = null;
|
final RestrictedLockUtils.EnforcedAdmin admin = null;
|
||||||
@@ -274,6 +284,15 @@ public class ScreenLockPreferenceDetailsUtilsTest {
|
|||||||
assertThat(mScreenLockPreferenceDetailsUtils.isLockPatternSecure()).isFalse();
|
assertThat(mScreenLockPreferenceDetailsUtils.isLockPatternSecure()).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isLockPatternSecure_noLockPatterUtils_shouldReturnFalse() {
|
||||||
|
when(mFeatureFactory.securityFeatureProvider.getLockPatternUtils(mContext))
|
||||||
|
.thenReturn(null);
|
||||||
|
mScreenLockPreferenceDetailsUtils = new ScreenLockPreferenceDetailsUtils(mContext);
|
||||||
|
|
||||||
|
assertThat(mScreenLockPreferenceDetailsUtils.isLockPatternSecure()).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@RequiresFlagsEnabled(Flags.FLAG_BIOMETRIC_ONBOARDING_EDUCATION)
|
@RequiresFlagsEnabled(Flags.FLAG_BIOMETRIC_ONBOARDING_EDUCATION)
|
||||||
public void shouldShowGearMenu_patternIsSecure_flagOn_shouldReturnFalse() {
|
public void shouldShowGearMenu_patternIsSecure_flagOn_shouldReturnFalse() {
|
||||||
@@ -341,6 +360,20 @@ public class ScreenLockPreferenceDetailsUtilsTest {
|
|||||||
ChooseLockGeneric.ChooseLockGenericFragment.class.getName());
|
ChooseLockGeneric.ChooseLockGenericFragment.class.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getLaunchChooseLockGenericFragmentIntent_noLockPatternUtils_returnsIntent() {
|
||||||
|
when(mFeatureFactory.securityFeatureProvider.getLockPatternUtils(mContext))
|
||||||
|
.thenReturn(null);
|
||||||
|
mScreenLockPreferenceDetailsUtils = new ScreenLockPreferenceDetailsUtils(mContext);
|
||||||
|
when(mUserManager.isQuietModeEnabled(any())).thenReturn(false);
|
||||||
|
|
||||||
|
final Intent intent = mScreenLockPreferenceDetailsUtils
|
||||||
|
.getLaunchChooseLockGenericFragmentIntent(SOURCE_METRICS_CATEGORY);
|
||||||
|
|
||||||
|
assertFragmentLaunchIntent(intent,
|
||||||
|
ChooseLockGeneric.ChooseLockGenericFragment.class.getName());
|
||||||
|
}
|
||||||
|
|
||||||
private void whenConfigShowUnlockSetOrChangeIsEnabled(boolean enabled) {
|
private void whenConfigShowUnlockSetOrChangeIsEnabled(boolean enabled) {
|
||||||
final int resId = ResourcesUtils.getResourcesId(
|
final int resId = ResourcesUtils.getResourcesId(
|
||||||
ApplicationProvider.getApplicationContext(), "bool",
|
ApplicationProvider.getApplicationContext(), "bool",
|
||||||
|
|||||||
Reference in New Issue
Block a user