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

Commit 3b15231e authored by Bill Lin's avatar Bill Lin Committed by Android (Google) Code Review
Browse files

Merge "Customize SetupChooseLockGeneric with Expressive style" into main

parents a31ff0c6 c0128566
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;
        }
    }
}