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

Commit c0128566 authored by lbill's avatar lbill
Browse files

Customize SetupChooseLockGeneric with Expressive style

Flag: N/A EXEMPT for Expressive style
Bug: 403148943
Bug: 416144946
Bug: 412260490
Bug: 407428317
Test: atest SetupChooseLockGenericTest
Test: manual login corp, and check the UI
Test: CTSVerifier
Change-Id: I326100900886c1131fd09a9e843fc8512d69d92f
parent ef3b67ae
Loading
Loading
Loading
Loading
+37 −9
Original line number Diff line number Diff line
@@ -38,11 +38,13 @@ import android.view.ViewGroup;
import androidx.fragment.app.Fragment;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.PreferenceScreen;
import androidx.recyclerview.widget.RecyclerView;

import com.android.internal.widget.LockPatternUtils;
import com.android.settings.R;
import com.android.settings.SetupWizardUtils;
import com.android.settings.accessibility.PreferenceAdapterInSuw;
import com.android.settings.utils.SettingsDividerItemDecoration;

import com.google.android.setupcompat.util.WizardManagerHelper;
@@ -75,9 +77,15 @@ public class SetupChooseLockGeneric extends ChooseLockGeneric {

    @Override
    protected void onCreate(Bundle savedInstance) {
        if (ThemeHelper.shouldApplyGlifExpressiveStyle(getApplicationContext())) {
            if (!ThemeHelper.trySetSuwTheme(this)) {
                setTheme(ThemeHelper.getSuwDefaultTheme(getApplicationContext()));
                ThemeHelper.trySetDynamicColor(this);
            }
        } else {
            setTheme(SetupWizardUtils.getTheme(this, getIntent()));
        setTheme(R.style.SettingsPreferenceTheme_SetupWizard);
            ThemeHelper.trySetDynamicColor(this);
        }
        super.onCreate(savedInstance);

        if(getIntent().hasExtra(EXTRA_KEY_REQUESTED_MIN_COMPLEXITY)) {
@@ -111,11 +119,17 @@ public class SetupChooseLockGeneric extends ChooseLockGeneric {
        public void onViewCreated(View view, Bundle savedInstanceState) {
            super.onViewCreated(view, savedInstanceState);

            final boolean isExpressiveStyle = ThemeHelper.shouldApplyGlifExpressiveStyle(
                    requireContext());

            GlifPreferenceLayout layout = (GlifPreferenceLayout) view;
            layout.setDescriptionText(loadDescriptionText());

            if (!isExpressiveStyle) {
                layout.setDividerItemDecoration(new SettingsDividerItemDecoration(getContext()));
                layout.setDividerInset(getContext().getResources().getDimensionPixelSize(
                        com.google.android.setupdesign.R.dimen.sud_items_glif_text_divider_inset));
            }

            layout.setIcon(getContext().getDrawable(R.drawable.ic_lock));

@@ -159,6 +173,14 @@ public class SetupChooseLockGeneric extends ChooseLockGeneric {
            return layout.onCreateRecyclerView(inflater, parent, savedInstanceState);
        }

        @Override
        protected RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) {
            if (ThemeHelper.shouldApplyGlifExpressiveStyle(requireContext())) {
                return new PreferenceAdapterInSuw(preferenceScreen);
            }
            return super.onCreateAdapter(preferenceScreen);
        }

        @Override
        protected boolean canRunBeforeDeviceProvisioned() {
            return true;
@@ -244,9 +266,15 @@ public class SetupChooseLockGeneric extends ChooseLockGeneric {
    public static class InternalActivity extends ChooseLockGeneric.InternalActivity {
        @Override
        protected void onCreate(Bundle savedState) {
            if (ThemeHelper.shouldApplyGlifExpressiveStyle(getApplicationContext())) {
                if (!ThemeHelper.trySetSuwTheme(this)) {
                    setTheme(ThemeHelper.getSuwDefaultTheme(getApplicationContext()));
                    ThemeHelper.trySetDynamicColor(this);
                }
            } else {
                setTheme(SetupWizardUtils.getTheme(this, getIntent()));
            setTheme(R.style.SettingsPreferenceTheme_SetupWizard);
                ThemeHelper.trySetDynamicColor(this);
            }
            super.onCreate(savedState);
        }

+33 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.when;
import static org.robolectric.RuntimeEnvironment.application;

import android.content.Context;
import android.content.Intent;
import android.hardware.face.FaceManager;
import android.hardware.fingerprint.FingerprintManager;
@@ -44,6 +45,7 @@ import com.android.settings.testutils.shadow.ShadowLockPatternUtils;
import com.android.settings.testutils.shadow.ShadowPasswordUtils;
import com.android.settings.testutils.shadow.ShadowUserManager;
import com.android.settings.testutils.shadow.ShadowUtils;
import com.android.settingslib.widget.SettingsThemeHelper;

import com.google.android.setupdesign.GlifPreferenceLayout;

@@ -59,6 +61,8 @@ import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.android.controller.ActivityController;
import org.robolectric.annotation.Config;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;

import java.util.List;

@@ -67,6 +71,7 @@ import java.util.List;
        ShadowUserManager.class,
        ShadowUtils.class,
        ShadowLockPatternUtils.class,
        SetupChooseLockGenericTest.ShadowSettingsThemeHelper.class,
})
public class SetupChooseLockGenericTest {

@@ -83,6 +88,7 @@ public class SetupChooseLockGenericTest {
    public void setUp() {
        ShadowUtils.setFingerprintManager(mFingerprintManager);
        ShadowUtils.setFaceManager(mFaceManager);
        ShadowSettingsThemeHelper.setExpressiveTheme(false);
        mFakeFeatureFactory = FakeFeatureFactory.setupForTest();

        Settings.Global.putInt(application.getContentResolver(), Settings.Global.DEVICE_PROVISIONED,
@@ -108,6 +114,18 @@ public class SetupChooseLockGenericTest {
        assertThat(activity.isFinishing()).isTrue();
    }

    @Test
    public void setupChooseLockGenericPasswordComplexityExtraWithoutPermissionExpressive() {
        ShadowSettingsThemeHelper.setExpressiveTheme(true);
        Intent intent = new Intent("com.android.settings.SETUP_LOCK_SCREEN");
        intent.putExtra(EXTRA_IS_SETUP_FLOW, true);
        intent.putExtra(EXTRA_KEY_REQUESTED_MIN_COMPLEXITY, PASSWORD_COMPLEXITY_HIGH);
        SetupChooseLockGeneric activity =
                Robolectric.buildActivity(SetupChooseLockGeneric.class, intent).create().get();

        assertThat(activity.isFinishing()).isTrue();
    }

    @Test
    @Config(shadows = {ShadowPasswordUtils.class})
    public void setupChooseLockGenericPasswordComplexityExtraWithPermission() {
@@ -223,4 +241,19 @@ public class SetupChooseLockGenericTest {
    private static String capitalize(final String input) {
        return Character.toUpperCase(input.charAt(0)) + input.substring(1);
    }

    @Implements(SettingsThemeHelper.class)
    public static class ShadowSettingsThemeHelper {
        private static boolean sIsExpressiveTheme;

        /** Shadow implementation of isExpressiveTheme */
        @Implementation
        public static boolean isExpressiveTheme(@NonNull Context context) {
            return sIsExpressiveTheme;
        }

        static void setExpressiveTheme(boolean isExpressiveTheme) {
            sIsExpressiveTheme = isExpressiveTheme;
        }
    }
}