diff --git a/res/layout/setup_choose_lock_generic_biometrics_header.xml b/res/layout/setup_choose_lock_generic_biometrics_header.xml deleted file mode 100644 index daeeedd845d..00000000000 --- a/res/layout/setup_choose_lock_generic_biometrics_header.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - diff --git a/res/layout/setup_choose_lock_generic_header.xml b/res/layout/setup_choose_lock_generic_header.xml deleted file mode 100644 index 7ec16d2c420..00000000000 --- a/res/layout/setup_choose_lock_generic_header.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - diff --git a/src/com/android/settings/password/SetupChooseLockGeneric.java b/src/com/android/settings/password/SetupChooseLockGeneric.java index 2f136e68f4c..551789d3ff2 100644 --- a/src/com/android/settings/password/SetupChooseLockGeneric.java +++ b/src/com/android/settings/password/SetupChooseLockGeneric.java @@ -109,6 +109,7 @@ public class SetupChooseLockGeneric extends ChooseLockGeneric { super.onViewCreated(view, savedInstanceState); GlifPreferenceLayout layout = (GlifPreferenceLayout) view; + layout.setDescriptionText(loadDescriptionText()); layout.setDividerItemDecoration(new SettingsDividerItemDecoration(getContext())); layout.setDividerInset(getContext().getResources().getDimensionPixelSize( R.dimen.sud_items_glif_text_divider_inset)); @@ -129,11 +130,9 @@ public class SetupChooseLockGeneric extends ChooseLockGeneric { @Override protected void addHeaderView() { - if (isForBiometric()) { - setHeaderView(R.layout.setup_choose_lock_generic_biometrics_header); - } else { - setHeaderView(R.layout.setup_choose_lock_generic_header); - } + // The original logic has been moved to onViewCreated and + // uses GlifLayout#setDescriptionText instead, + // keep empty body here since we won't call super method. } @Override @@ -239,6 +238,12 @@ public class SetupChooseLockGeneric extends ChooseLockGeneric { private boolean isForBiometric() { return mForFingerprint || mForFace || mForBiometrics; } + + String loadDescriptionText() { + return getString(isForBiometric() + ? R.string.lock_settings_picker_biometrics_added_security_message + : R.string.setup_lock_settings_picker_message); + } } public static class InternalActivity extends ChooseLockGeneric.InternalActivity { diff --git a/tests/robotests/src/com/android/settings/password/SetupChooseLockGenericTest.java b/tests/robotests/src/com/android/settings/password/SetupChooseLockGenericTest.java index cd79f58ee31..494d3f0671b 100644 --- a/tests/robotests/src/com/android/settings/password/SetupChooseLockGenericTest.java +++ b/tests/robotests/src/com/android/settings/password/SetupChooseLockGenericTest.java @@ -23,15 +23,20 @@ import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_R import static com.google.common.truth.Truth.assertThat; -import static org.robolectric.Shadows.shadowOf; - import android.content.Intent; +import android.text.TextUtils; +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; + +import com.android.settings.password.SetupChooseLockGeneric.SetupChooseLockGenericFragment; 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.google.android.setupdesign.GlifPreferenceLayout; + import org.junit.After; import org.junit.Test; import org.junit.runner.RunWith; @@ -41,6 +46,8 @@ import org.robolectric.Shadows; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowActivity; +import java.util.List; + @RunWith(RobolectricTestRunner.class) @Config(shadows = { ShadowUserManager.class, @@ -78,4 +85,43 @@ public class SetupChooseLockGenericTest { ShadowActivity shadowActivity = Shadows.shadowOf(activity); assertThat(shadowActivity.isFinishing()).isFalse(); } + + @Test + public void setupChooseLockGenericUsingDescriptionTextOfGlifLayout() { + SetupChooseLockGenericFragment fragment = getFragmentOfSetupChooseLockGeneric(false); + GlifPreferenceLayout view = getViewOfSetupChooseLockGenericFragment(fragment); + assertThat(TextUtils.isEmpty(view.getDescriptionText())).isFalse(); + assertThat(view.getDescriptionText().toString()).isEqualTo(fragment.loadDescriptionText()); + } + + @Test + public void setupChooseLockGenericUsingDescriptionTextOfGlifLayoutForBiometric() { + SetupChooseLockGenericFragment fragment = getFragmentOfSetupChooseLockGeneric(true); + GlifPreferenceLayout view = getViewOfSetupChooseLockGenericFragment(fragment); + assertThat(TextUtils.isEmpty(view.getDescriptionText())).isFalse(); + assertThat(view.getDescriptionText().toString()).isEqualTo(fragment.loadDescriptionText()); + } + + private SetupChooseLockGenericFragment getFragmentOfSetupChooseLockGeneric(boolean biometric) { + ShadowPasswordUtils.addGrantedPermission(REQUEST_PASSWORD_COMPLEXITY); + Intent intent = new Intent("com.android.settings.SETUP_LOCK_SCREEN"); + intent.putExtra(EXTRA_KEY_REQUESTED_MIN_COMPLEXITY, PASSWORD_COMPLEXITY_HIGH); + intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_FOR_FINGERPRINT, biometric); + SetupChooseLockGeneric activity = + Robolectric.buildActivity(SetupChooseLockGeneric.class, intent).setup().get(); + + List fragments = activity.getSupportFragmentManager().getFragments(); + assertThat(fragments).isNotNull(); + assertThat(fragments.size()).isEqualTo(1); + assertThat(fragments.get(0)).isInstanceOf(SetupChooseLockGenericFragment.class); + + return (SetupChooseLockGenericFragment) fragments.get(0); + } + private GlifPreferenceLayout getViewOfSetupChooseLockGenericFragment( + @NonNull SetupChooseLockGenericFragment fragment) { + assertThat(fragment.getView()).isNotNull(); + assertThat(fragment.getView()).isInstanceOf(GlifPreferenceLayout.class); + + return (GlifPreferenceLayout) fragment.getView(); + } }