Merge "Create MoreSecurtiyPrivacyFragment"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 9fb7ce1..ecd8aad 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -930,6 +930,18 @@
<string name="security_settings_udfps_enroll_progress_a11y_message">Enrolling fingerprint <xliff:g id="percentage" example="10">%d</xliff:g> percent</string>
<!-- Title shown in fingerprint enrollment dialog once enrollment is completed [CHAR LIMIT=29] -->
<string name="security_settings_fingerprint_enroll_finish_title">Fingerprint added</string>
+ <!-- Message shown in fingerprint enrollment dialog once enrollment is completed (tablet) [CHAR LIMIT=NONE] -->
+ <string name="security_settings_fingerprint_enroll_finish_v2_message" product="tablet">Now you can use your fingerprint to unlock your tablet or verify it\u2019s you, like when you sign in to apps or approve a purchase</string>
+ <!-- Message shown in fingerprint enrollment dialog once enrollment is completed (device) [CHAR LIMIT=NONE] -->
+ <string name="security_settings_fingerprint_enroll_finish_v2_message" product="device">Now you can use your fingerprint to unlock your device or verify it\u2019s you, like when you sign in to apps or approve a purchase</string>
+ <!-- Message shown in fingerprint enrollment dialog once enrollment is completed (default) [CHAR LIMIT=NONE] -->
+ <string name="security_settings_fingerprint_enroll_finish_v2_message" product="default">Now you can use your fingerprint to unlock your phone or verify it\u2019s you, like when you sign in to apps or approve a purchase</string>
+ <!-- Message shown in fingerprint enrollment dialog once enrollment is completed (tablet) [CHAR LIMIT=NONE] -->
+ <string name="security_settings_fingerprint_enroll_finish_v2_add_fingerprint_message" product="tablet">Now you can use your fingerprint to unlock your tablet or verify it\u2019s you, like when you sign in to apps or approve a purchase. \n\nAdd another fingerprint so it\u2019s easier to unlock when you hold your tablet in different ways.</string>
+ <!-- Message shown in fingerprint enrollment dialog once enrollment is completed (device) [CHAR LIMIT=NONE] -->
+ <string name="security_settings_fingerprint_enroll_finish_v2_add_fingerprint_message" product="device">Now you can use your fingerprint to unlock your device or verify it\u2019s you, like when you sign in to apps or approve a purchase.\n\nAdd another fingerprint so it\u2019s easier to unlock when you hold your device in different ways.</string>
+ <!-- Message shown in fingerprint enrollment dialog once enrollment is completed (default) [CHAR LIMIT=NONE] -->
+ <string name="security_settings_fingerprint_enroll_finish_v2_add_fingerprint_message" product="default">Now you can use your fingerprint to unlock your phone or verify it\u2019s you, like when you sign in to apps or approve a purchase.\n\nAdd another fingerprint so it\u2019s easier to unlock when you hold your phone in different ways.</string>
<!-- Title for require screen on to auth toggle shown in fingerprint enrollment dialog once enrollment is completed. [CHAR LIMIT=NONE] -->
<string name="security_settings_require_screen_on_to_auth_title">Touch to unlock anytime</string>
<!-- Description for require screen on to auth toggle shown in fingerprint enrollment dialog once enrollment is completed. [CHAR LIMIT=NONE] -->
diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java
index 10cdc4d..8e52c16 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettings.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettings.java
@@ -64,8 +64,9 @@
private static final String CATEGORY_CAPTIONS = "captions_category";
private static final String CATEGORY_AUDIO = "audio_category";
private static final String CATEGORY_DISPLAY = "display_category";
- private static final String CATEGORY_INTERACTION_CONTROL = "interaction_control_category";
private static final String CATEGORY_DOWNLOADED_SERVICES = "user_installed_services_category";
+ @VisibleForTesting
+ static final String CATEGORY_INTERACTION_CONTROL = "interaction_control_category";
private static final String[] CATEGORIES = new String[]{
CATEGORY_SCREEN_READER, CATEGORY_CAPTIONS, CATEGORY_AUDIO, CATEGORY_DISPLAY,
@@ -144,7 +145,8 @@
private final Map<String, PreferenceCategory> mCategoryToPrefCategoryMap =
new ArrayMap<>();
- private final Map<Preference, PreferenceCategory> mServicePreferenceToPreferenceCategoryMap =
+ @VisibleForTesting
+ final Map<Preference, PreferenceCategory> mServicePreferenceToPreferenceCategoryMap =
new ArrayMap<>();
private final Map<ComponentName, PreferenceCategory> mPreBundledServiceComponentToCategoryMap =
new ArrayMap<>();
@@ -352,6 +354,12 @@
initializePreBundledServicesMapFromArray(CATEGORY_INTERACTION_CONTROL,
R.array.config_preinstalled_interaction_control_services);
+ // ACCESSIBILITY_MENU_IN_SYSTEM is a default pre-bundled interaction control service.
+ // If the device opts out of including this service then this is a no-op.
+ mPreBundledServiceComponentToCategoryMap.put(
+ AccessibilityManager.ACCESSIBILITY_MENU_IN_SYSTEM,
+ mCategoryToPrefCategoryMap.get(CATEGORY_INTERACTION_CONTROL));
+
final List<RestrictedPreference> preferenceList = getInstalledAccessibilityList(
getPrefContext());
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFinish.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFinish.java
index 2125d52..bbaa3c7 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFinish.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFinish.java
@@ -70,6 +70,9 @@
}
setHeaderText(R.string.security_settings_fingerprint_enroll_finish_title);
setDescriptionText(R.string.security_settings_fingerprint_enroll_finish_v2_message);
+ if (mCanAssumeSfps) {
+ setDescriptionForSfps();
+ }
mFooterBarMixin = getLayout().getMixin(FooterBarMixin.class);
mFooterBarMixin.setSecondaryButton(
@@ -90,6 +93,20 @@
);
}
+ private void setDescriptionForSfps() {
+ final FingerprintManager fpm = Utils.getFingerprintManagerOrNull(this);
+ if (fpm != null) {
+ final List<FingerprintSensorPropertiesInternal> props =
+ fpm.getSensorPropertiesInternal();
+ final int maxEnrollments = props.get(0).maxEnrollmentsPerUser;
+ final int enrolled = fpm.getEnrolledFingerprints(mUserId).size();
+ if (enrolled < maxEnrollments) {
+ setDescriptionText(R.string
+ .security_settings_fingerprint_enroll_finish_v2_add_fingerprint_message);
+ }
+ }
+ }
+
@Override
public void onBackPressed() {
updateFingerprintSuggestionEnableState();
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java
index 30aa00a..bf3951e 100644
--- a/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java
@@ -328,13 +328,43 @@
}
+ @Test
+ @Config(shadows = {ShadowFragment.class, ShadowUserManager.class})
+ public void testAccessibilityMenuInSystem_IncludedInInteractionControl() {
+ mShadowAccessibilityManager.setInstalledAccessibilityServiceList(
+ List.of(getMockAccessibilityServiceInfo(
+ AccessibilityManager.ACCESSIBILITY_MENU_IN_SYSTEM)));
+ setupFragment();
+
+ final RestrictedPreference pref = mFragment.getPreferenceScreen().findPreference(
+ AccessibilityManager.ACCESSIBILITY_MENU_IN_SYSTEM.flattenToString());
+ final String prefCategory = mFragment.mServicePreferenceToPreferenceCategoryMap.get(
+ pref).getKey();
+ assertThat(prefCategory).isEqualTo(AccessibilitySettings.CATEGORY_INTERACTION_CONTROL);
+ }
+
+ @Test
+ @Config(shadows = {ShadowFragment.class, ShadowUserManager.class})
+ public void testAccessibilityMenuInSystem_NoPrefWhenNotInstalled() {
+ mShadowAccessibilityManager.setInstalledAccessibilityServiceList(List.of());
+ setupFragment();
+
+ final RestrictedPreference pref = mFragment.getPreferenceScreen().findPreference(
+ AccessibilityManager.ACCESSIBILITY_MENU_IN_SYSTEM.flattenToString());
+ assertThat(pref).isNull();
+ }
+
private AccessibilityServiceInfo getMockAccessibilityServiceInfo(String packageName,
String className) {
+ return getMockAccessibilityServiceInfo(new ComponentName(packageName, className));
+ }
+
+ private AccessibilityServiceInfo getMockAccessibilityServiceInfo(ComponentName componentName) {
final ApplicationInfo applicationInfo = new ApplicationInfo();
final ServiceInfo serviceInfo = new ServiceInfo();
- applicationInfo.packageName = packageName;
- serviceInfo.packageName = packageName;
- serviceInfo.name = className;
+ applicationInfo.packageName = componentName.getPackageName();
+ serviceInfo.packageName = componentName.getPackageName();
+ serviceInfo.name = componentName.getClassName();
serviceInfo.applicationInfo = applicationInfo;
final ResolveInfo resolveInfo = new ResolveInfo();
@@ -342,7 +372,7 @@
try {
final AccessibilityServiceInfo info = new AccessibilityServiceInfo(resolveInfo,
mContext);
- info.setComponentName(new ComponentName(packageName, className));
+ info.setComponentName(componentName);
return info;
} catch (XmlPullParserException | IOException e) {
// Do nothing