Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bb8e8177 authored by Lenka Trochtova's avatar Lenka Trochtova
Browse files

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
parent 0d8d233a
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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)) {
+16 −4
Original line number Diff line number Diff line
@@ -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;
    }
+7 −1
Original line number Diff line number Diff line
@@ -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);
    }
}
+2 −1
Original line number Diff line number Diff line
@@ -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;
+8 −1
Original line number Diff line number Diff line
@@ -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
Loading