Settings UI fix for missing secure lock screen feature.
Bug: 123737250 Bug: 111072170 Bug: 111071972 Test: manual both with and without the feature flag Test: make RunSettingsRoboTests Change-Id: Iacefa95dce85d860633315e074cbf2772691cfdd
This commit is contained in:
@@ -238,8 +238,8 @@ public class ChooseLockGeneric extends SettingsActivity {
|
||||
UserManager.get(getActivity()),
|
||||
getArguments(),
|
||||
getActivity().getIntent().getExtras()).getIdentifier();
|
||||
mController =
|
||||
new ChooseLockGenericController(getContext(), mUserId, mRequestedMinComplexity);
|
||||
mController = new ChooseLockGenericController(
|
||||
getContext(), mUserId, mRequestedMinComplexity, mLockPatternUtils);
|
||||
if (ACTION_SET_NEW_PASSWORD.equals(chooseLockAction)
|
||||
&& UserManager.get(getActivity()).isManagedProfile(mUserId)
|
||||
&& mLockPatternUtils.isSeparateProfileChallengeEnabled(mUserId)) {
|
||||
|
@@ -27,6 +27,7 @@ import android.os.UserHandle;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
import com.android.internal.widget.LockPatternUtils;
|
||||
import com.android.settings.R;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -43,12 +44,14 @@ public class ChooseLockGenericController {
|
||||
@PasswordComplexity private final int mRequestedMinComplexity;
|
||||
private ManagedLockPasswordProvider mManagedPasswordProvider;
|
||||
private DevicePolicyManager mDpm;
|
||||
private final LockPatternUtils mLockPatternUtils;
|
||||
|
||||
public ChooseLockGenericController(Context context, int userId) {
|
||||
this(
|
||||
context,
|
||||
userId,
|
||||
PASSWORD_COMPLEXITY_NONE);
|
||||
PASSWORD_COMPLEXITY_NONE,
|
||||
new LockPatternUtils(context));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -56,13 +59,14 @@ public class ChooseLockGenericController {
|
||||
* when determining the available screen lock types
|
||||
*/
|
||||
public ChooseLockGenericController(Context context, int userId,
|
||||
@PasswordComplexity int requestedMinComplexity) {
|
||||
@PasswordComplexity int requestedMinComplexity, LockPatternUtils lockPatternUtils) {
|
||||
this(
|
||||
context,
|
||||
userId,
|
||||
requestedMinComplexity,
|
||||
context.getSystemService(DevicePolicyManager.class),
|
||||
ManagedLockPasswordProvider.get(context, userId));
|
||||
ManagedLockPasswordProvider.get(context, userId),
|
||||
lockPatternUtils);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
@@ -71,12 +75,14 @@ public class ChooseLockGenericController {
|
||||
int userId,
|
||||
@PasswordComplexity int requestedMinComplexity,
|
||||
DevicePolicyManager dpm,
|
||||
ManagedLockPasswordProvider managedLockPasswordProvider) {
|
||||
ManagedLockPasswordProvider managedLockPasswordProvider,
|
||||
LockPatternUtils lockPatternUtils) {
|
||||
mContext = context;
|
||||
mUserId = userId;
|
||||
mRequestedMinComplexity = requestedMinComplexity;
|
||||
mManagedPasswordProvider = managedLockPasswordProvider;
|
||||
mDpm = dpm;
|
||||
mLockPatternUtils = lockPatternUtils;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -105,6 +111,12 @@ public class ChooseLockGenericController {
|
||||
&& !managedProfile; // Swipe doesn't make sense for profiles.
|
||||
case MANAGED:
|
||||
return mManagedPasswordProvider.isManagedPasswordChoosable();
|
||||
case PIN:
|
||||
case PATTERN:
|
||||
case PASSWORD:
|
||||
// Hide the secure lock screen options if the device doesn't support the secure lock
|
||||
// screen feature.
|
||||
return mLockPatternUtils.hasSecureLockScreen();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@@ -34,6 +34,7 @@ import android.app.admin.DevicePolicyManager;
|
||||
import android.app.admin.DevicePolicyManager.PasswordComplexity;
|
||||
import android.content.ComponentName;
|
||||
|
||||
import com.android.internal.widget.LockPatternUtils;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.testutils.shadow.SettingsShadowResources;
|
||||
|
||||
@@ -61,10 +62,14 @@ public class ChooseLockGenericControllerTest {
|
||||
@Mock
|
||||
private DevicePolicyManager mDevicePolicyManager;
|
||||
|
||||
@Mock
|
||||
private LockPatternUtils mLockPatternUtils;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
|
||||
when(mLockPatternUtils.hasSecureLockScreen()).thenReturn(true);
|
||||
mController = createController(PASSWORD_COMPLEXITY_NONE);
|
||||
SettingsShadowResources.overrideResource(R.bool.config_hide_none_security_option, false);
|
||||
SettingsShadowResources.overrideResource(R.bool.config_hide_swipe_security_option, false);
|
||||
@@ -266,6 +271,7 @@ public class ChooseLockGenericControllerTest {
|
||||
0 /* userId */,
|
||||
minPasswordComplexity,
|
||||
mDevicePolicyManager,
|
||||
mManagedLockPasswordProvider);
|
||||
mManagedLockPasswordProvider,
|
||||
mLockPatternUtils);
|
||||
}
|
||||
}
|
||||
|
@@ -33,6 +33,7 @@ import androidx.fragment.app.FragmentActivity;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.password.ChooseLockTypeDialogFragment.OnLockTypeSelectedListener;
|
||||
import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
|
||||
import com.android.settings.testutils.shadow.ShadowLockPatternUtils;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -43,7 +44,7 @@ import org.robolectric.annotation.Config;
|
||||
import org.robolectric.shadows.androidx.fragment.FragmentController;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
@Config(shadows = ShadowAlertDialogCompat.class)
|
||||
@Config(shadows = {ShadowAlertDialogCompat.class, ShadowLockPatternUtils.class})
|
||||
public class ChooseLockTypeDialogFragmentTest {
|
||||
|
||||
private Context mContext;
|
||||
|
@@ -34,6 +34,7 @@ import com.android.settings.password.ChooseLockPassword.IntentBuilder;
|
||||
import com.android.settings.password.SetupChooseLockPassword.SetupChooseLockPasswordFragment;
|
||||
import com.android.settings.testutils.shadow.SettingsShadowResources;
|
||||
import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
|
||||
import com.android.settings.testutils.shadow.ShadowLockPatternUtils;
|
||||
import com.android.settings.testutils.shadow.ShadowUtils;
|
||||
import com.android.settings.widget.ScrollToParentEditText;
|
||||
|
||||
@@ -57,7 +58,13 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
@Config(shadows = {SettingsShadowResources.class, ShadowUtils.class, ShadowAlertDialogCompat.class})
|
||||
@Config(
|
||||
shadows = {
|
||||
SettingsShadowResources.class,
|
||||
ShadowLockPatternUtils.class,
|
||||
ShadowUtils.class,
|
||||
ShadowAlertDialogCompat.class
|
||||
})
|
||||
public class SetupChooseLockPasswordTest {
|
||||
|
||||
@Before
|
||||
|
@@ -38,6 +38,7 @@ import com.android.settings.SetupRedactionInterstitial;
|
||||
import com.android.settings.password.ChooseLockPattern.ChooseLockPatternFragment;
|
||||
import com.android.settings.password.ChooseLockPattern.IntentBuilder;
|
||||
import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
|
||||
import com.android.settings.testutils.shadow.ShadowLockPatternUtils;
|
||||
import com.android.settings.testutils.shadow.ShadowUtils;
|
||||
|
||||
import com.google.android.setupcompat.PartnerCustomizationLayout;
|
||||
@@ -57,7 +58,7 @@ import org.robolectric.util.ReflectionHelpers.ClassParameter;
|
||||
import java.util.Arrays;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
@Config(shadows = {ShadowUtils.class, ShadowAlertDialogCompat.class})
|
||||
@Config(shadows = {ShadowUtils.class, ShadowAlertDialogCompat.class, ShadowLockPatternUtils.class})
|
||||
public class SetupChooseLockPatternTest {
|
||||
|
||||
private SetupChooseLockPattern mActivity;
|
||||
|
@@ -31,6 +31,11 @@ public class ShadowLockPatternUtils {
|
||||
|
||||
private static boolean sDeviceEncryptionEnabled;
|
||||
|
||||
@Implementation
|
||||
protected boolean hasSecureLockScreen() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Implementation
|
||||
protected boolean isSecure(int id) {
|
||||
return true;
|
||||
|
Reference in New Issue
Block a user