diff --git a/res/values/strings.xml b/res/values/strings.xml
index c05626e231f..971e40ed81c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -833,6 +833,8 @@
Face added
Setup needed
+
+ Add face
Face
@@ -1006,6 +1008,8 @@
}
Setup needed
+
+ Add fingerprint
Set up your fingerprint
@@ -1771,6 +1775,8 @@
None
+
+ Add PIN, pattern, password, or swipe
Swipe
diff --git a/src/com/android/settings/biometrics/face/FaceStatusUtils.java b/src/com/android/settings/biometrics/face/FaceStatusUtils.java
index 302d6773213..ee5277edf7a 100644
--- a/src/com/android/settings/biometrics/face/FaceStatusUtils.java
+++ b/src/com/android/settings/biometrics/face/FaceStatusUtils.java
@@ -98,11 +98,14 @@ public class FaceStatusUtils {
return mContext.getString(
com.android.settingslib.widget.restricted.R.string.disabled_by_admin);
} else {
+ int summaryNoneResId = Flags.biometricsOnboardingEducation()
+ ? R.string.security_settings_face_preference_summary_none_new
+ : R.string.security_settings_face_preference_summary_none;
return mContext.getResources()
.getString(
hasEnrolled()
? R.string.security_settings_face_preference_summary
- : R.string.security_settings_face_preference_summary_none);
+ : summaryNoneResId);
}
}
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintStatusUtils.java b/src/com/android/settings/biometrics/fingerprint/FingerprintStatusUtils.java
index 1ca564c8e35..b7ca3aa0002 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintStatusUtils.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintStatusUtils.java
@@ -108,7 +108,9 @@ public class FingerprintStatusUtils {
R.string.security_settings_fingerprint_preference_summary);
} else {
return mContext.getString(
- R.string.security_settings_fingerprint_preference_summary_none);
+ Flags.biometricsOnboardingEducation()
+ ? R.string.security_settings_fingerprint_preference_summary_none_new
+ : R.string.security_settings_fingerprint_preference_summary_none);
}
}
diff --git a/src/com/android/settings/security/ScreenLockPreferenceDetailsUtils.java b/src/com/android/settings/security/ScreenLockPreferenceDetailsUtils.java
index b1685685bb4..e74db34dee0 100644
--- a/src/com/android/settings/security/ScreenLockPreferenceDetailsUtils.java
+++ b/src/com/android/settings/security/ScreenLockPreferenceDetailsUtils.java
@@ -178,7 +178,9 @@ public class ScreenLockPreferenceDetailsUtils {
if (!mLockPatternUtils.isSecure(userId)) {
if (userId == mProfileChallengeUserId
|| mLockPatternUtils.isLockScreenDisabled(userId)) {
- return R.string.unlock_set_unlock_mode_off;
+ return com.android.settings.flags.Flags.biometricsOnboardingEducation()
+ ? R.string.unlock_set_unlock_mode_off_new
+ : R.string.unlock_set_unlock_mode_off;
} else {
return R.string.unlock_set_unlock_mode_none;
}
diff --git a/tests/robotests/src/com/android/settings/biometrics/face/FaceStatusPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/biometrics/face/FaceStatusPreferenceControllerTest.java
index c426f9479ef..8f565147247 100644
--- a/tests/robotests/src/com/android/settings/biometrics/face/FaceStatusPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/face/FaceStatusPreferenceControllerTest.java
@@ -36,6 +36,9 @@ import android.content.pm.PackageManager;
import android.hardware.face.Face;
import android.hardware.face.FaceManager;
import android.os.UserManager;
+import android.platform.test.annotations.DisableFlags;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
import androidx.lifecycle.LifecycleOwner;
import androidx.preference.Preference;
@@ -50,6 +53,7 @@ import com.android.settingslib.core.lifecycle.Lifecycle;
import org.junit.Before;
import org.junit.Ignore;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
@@ -67,6 +71,8 @@ public class FaceStatusPreferenceControllerTest {
private static final String TEST_PREF_KEY = "baz";
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
@Mock
private LockPatternUtils mLockPatternUtils;
@Mock
@@ -125,7 +131,8 @@ public class FaceStatusPreferenceControllerTest {
}
@Test
- public void updateState_noFace_shouldShowDefaultSummary() {
+ @DisableFlags(com.android.settings.flags.Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION)
+ public void updateState_noFace_flagOff_shouldShowDefaultSummary() {
when(mFaceManager.isHardwareDetected()).thenReturn(true);
mController.updateState(mPreference);
@@ -135,6 +142,18 @@ public class FaceStatusPreferenceControllerTest {
assertThat(mPreference.isVisible()).isTrue();
}
+ @Test
+ @EnableFlags(com.android.settings.flags.Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION)
+ public void updateState_noFace_flagOn_shouldShowDefaultSummary() {
+ when(mFaceManager.isHardwareDetected()).thenReturn(true);
+
+ mController.updateState(mPreference);
+
+ assertThat(mPreference.getSummary()).isEqualTo(
+ mContext.getString(R.string.security_settings_face_preference_summary_none_new));
+ assertThat(mPreference.isVisible()).isTrue();
+ }
+
@Test
public void updateState_hasFace_shouldShowSummary() {
when(mFaceManager.isHardwareDetected()).thenReturn(true);
diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintStatusPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintStatusPreferenceControllerTest.java
index 000ee933dc4..de8c0709884 100644
--- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintStatusPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintStatusPreferenceControllerTest.java
@@ -36,6 +36,9 @@ import android.content.pm.PackageManager;
import android.hardware.fingerprint.Fingerprint;
import android.hardware.fingerprint.FingerprintManager;
import android.os.UserManager;
+import android.platform.test.annotations.DisableFlags;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
import androidx.lifecycle.LifecycleOwner;
import androidx.preference.Preference;
@@ -51,6 +54,7 @@ import com.android.settingslib.utils.StringUtil;
import org.junit.Before;
import org.junit.Ignore;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
@@ -66,6 +70,8 @@ import java.util.Collections;
@Config(shadows = {ShadowRestrictedLockUtilsInternal.class})
public class FingerprintStatusPreferenceControllerTest {
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
@Mock
private LockPatternUtils mLockPatternUtils;
@Mock
@@ -125,7 +131,8 @@ public class FingerprintStatusPreferenceControllerTest {
}
@Test
- public void updateState_noFingerprint_shouldShowDefaultSummary() {
+ @DisableFlags(com.android.settings.flags.Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION)
+ public void updateState_noFingerprint_flagOff_shouldShowDefaultSummary() {
when(mFingerprintManager.isHardwareDetected()).thenReturn(true);
mController.updateState(mPreference);
@@ -135,6 +142,19 @@ public class FingerprintStatusPreferenceControllerTest {
assertThat(mPreference.isVisible()).isTrue();
}
+ @Test
+ @EnableFlags(com.android.settings.flags.Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION)
+ public void updateState_noFingerprint_flagOn_shouldShowDefaultSummary() {
+ when(mFingerprintManager.isHardwareDetected()).thenReturn(true);
+
+ mController.updateState(mPreference);
+
+ assertThat(mPreference.getSummary()).isEqualTo(
+ mContext.getString(
+ R.string.security_settings_fingerprint_preference_summary_none_new));
+ assertThat(mPreference.isVisible()).isTrue();
+ }
+
@Test
public void updateState_hasFingerprint_shouldShowSummary() {
when(mFingerprintManager.isHardwareDetected()).thenReturn(true);
diff --git a/tests/unit/src/com/android/settings/biometrics/face/FaceStatusUtilsTest.java b/tests/unit/src/com/android/settings/biometrics/face/FaceStatusUtilsTest.java
index f5d090af72b..87c43ac3b57 100644
--- a/tests/unit/src/com/android/settings/biometrics/face/FaceStatusUtilsTest.java
+++ b/tests/unit/src/com/android/settings/biometrics/face/FaceStatusUtilsTest.java
@@ -172,7 +172,8 @@ public class FaceStatusUtilsTest {
}
@Test
- public void getSummary_whenNotEnrolled_returnsSummaryNone() {
+ @DisableFlags(com.android.settings.flags.Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION)
+ public void getSummary_whenNotEnrolled_flagOff_returnsSummaryNone() {
when(mFaceManager.hasEnrolledTemplates(anyInt())).thenReturn(false);
assertThat(mFaceStatusUtils.getSummary())
@@ -181,6 +182,17 @@ public class FaceStatusUtilsTest {
"security_settings_face_preference_summary_none"));
}
+ @Test
+ @EnableFlags(com.android.settings.flags.Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION)
+ public void getSummary_whenNotEnrolled_flagOn_returnsSummaryNone() {
+ when(mFaceManager.hasEnrolledTemplates(anyInt())).thenReturn(false);
+
+ assertThat(mFaceStatusUtils.getSummary())
+ .isEqualTo(ResourcesUtils.getResourcesString(
+ mApplicationContext,
+ "security_settings_face_preference_summary_none_new"));
+ }
+
@Test
public void getSummary_whenEnrolled_returnsSummary() {
when(mFaceManager.hasEnrolledTemplates(anyInt())).thenReturn(true);
diff --git a/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintStatusUtilsTest.java b/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintStatusUtilsTest.java
index 375c1ff0c0f..b603f4b412f 100644
--- a/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintStatusUtilsTest.java
+++ b/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintStatusUtilsTest.java
@@ -179,7 +179,8 @@ public class FingerprintStatusUtilsTest {
}
@Test
- public void getSummary_whenNotEnrolled_returnsSummaryNone() {
+ @DisableFlags(com.android.settings.flags.Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION)
+ public void getSummary_whenNotEnrolled_flagOff_returnsSummaryNone() {
when(mFingerprintManager.hasEnrolledTemplates(anyInt())).thenReturn(false);
assertThat(mFingerprintStatusUtils.getSummary())
@@ -188,6 +189,17 @@ public class FingerprintStatusUtilsTest {
"security_settings_fingerprint_preference_summary_none"));
}
+ @Test
+ @EnableFlags(com.android.settings.flags.Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION)
+ public void getSummary_whenNotEnrolled_flagOn_returnsSummaryNone() {
+ when(mFingerprintManager.hasEnrolledTemplates(anyInt())).thenReturn(false);
+
+ assertThat(mFingerprintStatusUtils.getSummary())
+ .isEqualTo(ResourcesUtils.getResourcesString(
+ mApplicationContext,
+ "security_settings_fingerprint_preference_summary_none_new"));
+ }
+
@Test
public void getSummary_whenEnrolled_returnsSummary() {
final int enrolledFingerprintsCount = 2;
diff --git a/tests/unit/src/com/android/settings/safetycenter/FaceSafetySourceTest.java b/tests/unit/src/com/android/settings/safetycenter/FaceSafetySourceTest.java
index 9a162ae9a1f..9335ced149c 100644
--- a/tests/unit/src/com/android/settings/safetycenter/FaceSafetySourceTest.java
+++ b/tests/unit/src/com/android/settings/safetycenter/FaceSafetySourceTest.java
@@ -187,7 +187,7 @@ public class FaceSafetySourceTest {
assertSafetySourceDisabledDataSetWithSingularSummary(
"security_settings_face_preference_title_new",
- "security_settings_face_preference_summary_none");
+ "security_settings_face_preference_summary_none_new");
}
@Test
@@ -205,7 +205,7 @@ public class FaceSafetySourceTest {
assertSafetySourceDisabledDataSetWithSingularSummary(
"security_settings_face_preference_title_new",
- "security_settings_face_preference_summary_none");
+ "security_settings_face_preference_summary_none_new");
}
@Test
@@ -220,7 +220,7 @@ public class FaceSafetySourceTest {
assertSafetySourceEnabledDataSetWithSingularSummary(
"security_settings_face_preference_title_new",
- "security_settings_face_preference_summary_none",
+ "security_settings_face_preference_summary_none_new",
FaceEnrollIntroductionInternal.class.getName());
}
diff --git a/tests/unit/src/com/android/settings/safetycenter/FingerprintSafetySourceTest.java b/tests/unit/src/com/android/settings/safetycenter/FingerprintSafetySourceTest.java
index fd109f61638..91e7953fd5f 100644
--- a/tests/unit/src/com/android/settings/safetycenter/FingerprintSafetySourceTest.java
+++ b/tests/unit/src/com/android/settings/safetycenter/FingerprintSafetySourceTest.java
@@ -203,7 +203,7 @@ public class FingerprintSafetySourceTest {
assertSafetySourceDisabledDataSetWithSingularSummary(
"security_settings_fingerprint",
- "security_settings_fingerprint_preference_summary_none");
+ "security_settings_fingerprint_preference_summary_none_new");
}
@Test
@@ -222,7 +222,7 @@ public class FingerprintSafetySourceTest {
assertSafetySourceDisabledDataSetWithSingularSummary(
"security_settings_fingerprint",
- "security_settings_fingerprint_preference_summary_none");
+ "security_settings_fingerprint_preference_summary_none_new");
}
@Test
@@ -238,7 +238,7 @@ public class FingerprintSafetySourceTest {
assertSafetySourceEnabledDataSetWithSingularSummary(
"security_settings_fingerprint",
- "security_settings_fingerprint_preference_summary_none",
+ "security_settings_fingerprint_preference_summary_none_new",
FingerprintSettings.class.getName());
}
diff --git a/tests/unit/src/com/android/settings/security/ScreenLockPreferenceDetailsUtilsTest.java b/tests/unit/src/com/android/settings/security/ScreenLockPreferenceDetailsUtilsTest.java
index 25358708043..2e674e0b79e 100644
--- a/tests/unit/src/com/android/settings/security/ScreenLockPreferenceDetailsUtilsTest.java
+++ b/tests/unit/src/com/android/settings/security/ScreenLockPreferenceDetailsUtilsTest.java
@@ -32,10 +32,13 @@ import android.content.Intent;
import android.content.res.Resources;
import android.os.UserManager;
import android.os.storage.StorageManager;
+import android.platform.test.annotations.DisableFlags;
+import android.platform.test.annotations.EnableFlags;
import android.platform.test.annotations.RequiresFlagsDisabled;
import android.platform.test.annotations.RequiresFlagsEnabled;
import android.platform.test.flag.junit.CheckFlagsRule;
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
+import android.platform.test.flag.junit.SetFlagsRule;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -64,6 +67,8 @@ public class ScreenLockPreferenceDetailsUtilsTest {
private static final int SOURCE_METRICS_CATEGORY = 10;
private static final int USER_ID = 11;
+ @Rule
+ public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
@Rule
public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
@Mock
@@ -118,7 +123,8 @@ public class ScreenLockPreferenceDetailsUtilsTest {
}
@Test
- public void getSummary_unsecureAndDisabledPattern_shouldReturnUnlockModeOff() {
+ @DisableFlags(com.android.settings.flags.Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION)
+ public void getSummary_unsecureAndDisabledPattern_flagOff_shouldReturnUnlockModeOff() {
final String summary = prepareString("unlock_set_unlock_mode_off", "unlockModeOff");
when(mLockPatternUtils.isSecure(USER_ID)).thenReturn(false);
@@ -127,6 +133,17 @@ public class ScreenLockPreferenceDetailsUtilsTest {
assertThat(mScreenLockPreferenceDetailsUtils.getSummary(USER_ID)).isEqualTo(summary);
}
+ @Test
+ @EnableFlags(com.android.settings.flags.Flags.FLAG_BIOMETRICS_ONBOARDING_EDUCATION)
+ public void getSummary_unsecureAndDisabledPattern_flagOn_shouldReturnUnlockModeOff() {
+ final String summary = prepareString("unlock_set_unlock_mode_off_new", "unlockModeOff");
+
+ when(mLockPatternUtils.isSecure(USER_ID)).thenReturn(false);
+ when(mLockPatternUtils.isLockScreenDisabled(anyInt())).thenReturn(true);
+
+ assertThat(mScreenLockPreferenceDetailsUtils.getSummary(USER_ID)).isEqualTo(summary);
+ }
+
@Test
public void getSummary_unsecurePattern_shouldReturnUnlockModeNone() {
final String summary =