Loading src/com/android/settings/password/SetupChooseLockGeneric.java +37 −9 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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)) { Loading Loading @@ -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)); Loading Loading @@ -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; Loading Loading @@ -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); } Loading tests/robotests/src/com/android/settings/password/SetupChooseLockGenericTest.java +33 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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; Loading @@ -67,6 +71,7 @@ import java.util.List; ShadowUserManager.class, ShadowUtils.class, ShadowLockPatternUtils.class, SetupChooseLockGenericTest.ShadowSettingsThemeHelper.class, }) public class SetupChooseLockGenericTest { Loading @@ -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, Loading @@ -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() { Loading Loading @@ -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; } } } Loading
src/com/android/settings/password/SetupChooseLockGeneric.java +37 −9 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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)) { Loading Loading @@ -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)); Loading Loading @@ -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; Loading Loading @@ -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); } Loading
tests/robotests/src/com/android/settings/password/SetupChooseLockGenericTest.java +33 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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; Loading @@ -67,6 +71,7 @@ import java.util.List; ShadowUserManager.class, ShadowUtils.class, ShadowLockPatternUtils.class, SetupChooseLockGenericTest.ShadowSettingsThemeHelper.class, }) public class SetupChooseLockGenericTest { Loading @@ -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, Loading @@ -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() { Loading Loading @@ -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; } } }