Add subtitle to settings (settings)

Allows a credential provider to show a
subtitle/summary underneath the title in
the list of providers.

Test: ondevice & atest
Bug: 253157366
Change-Id: I481da16985027a49ee464623b6db166d941cab55
This commit is contained in:
Becca Hughes
2023-02-23 19:52:53 +00:00
parent 53936d0ec3
commit 6474e01372
2 changed files with 22 additions and 4 deletions

View File

@@ -176,7 +176,8 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl
context, context,
label == null ? "" : label, label == null ? "" : label,
service.getServiceIcon(mContext), service.getServiceIcon(mContext),
service.getServiceInfo().packageName); service.getServiceInfo().packageName,
service.getSettingsSubtitle());
} }
/** /**
@@ -234,7 +235,8 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl
@NonNull Context prefContext, @NonNull Context prefContext,
@NonNull CharSequence title, @NonNull CharSequence title,
@Nullable Drawable icon, @Nullable Drawable icon,
@NonNull String packageName) { @NonNull String packageName,
@Nullable CharSequence subtitle) {
final SwitchPreference pref = new SwitchPreference(prefContext); final SwitchPreference pref = new SwitchPreference(prefContext);
pref.setTitle(title); pref.setTitle(title);
pref.setChecked(mEnabledPackageNames.contains(packageName)); pref.setChecked(mEnabledPackageNames.contains(packageName));
@@ -244,6 +246,10 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl
pref.setIcon(Utils.getSafeIcon(icon)); pref.setIcon(Utils.getSafeIcon(icon));
} }
if (subtitle != null) {
pref.setSummary(subtitle);
}
pref.setOnPreferenceClickListener( pref.setOnPreferenceClickListener(
p -> { p -> {
boolean isChecked = pref.isChecked(); boolean isChecked = pref.isChecked();

View File

@@ -115,10 +115,10 @@ public class CredentialManagerPreferenceControllerTest {
public void buildSwitchPreference() { public void buildSwitchPreference() {
CredentialProviderInfo providerInfo1 = CredentialProviderInfo providerInfo1 =
createCredentialProviderInfo( createCredentialProviderInfo(
"com.android.provider1", "ClassA", "Service Title", false); "com.android.provider1", "ClassA", "Service Title", false, null);
CredentialProviderInfo providerInfo2 = CredentialProviderInfo providerInfo2 =
createCredentialProviderInfo( createCredentialProviderInfo(
"com.android.provider2", "ClassA", "Service Title", false); "com.android.provider2", "ClassA", "Service Title", false, "Summary Text");
CredentialManagerPreferenceController controller = CredentialManagerPreferenceController controller =
createControllerWithServices(Lists.newArrayList(providerInfo1, providerInfo2)); createControllerWithServices(Lists.newArrayList(providerInfo1, providerInfo2));
assertThat(controller.getAvailabilityStatus()).isEqualTo(AVAILABLE); assertThat(controller.getAvailabilityStatus()).isEqualTo(AVAILABLE);
@@ -139,11 +139,13 @@ public class CredentialManagerPreferenceControllerTest {
SwitchPreference pref = controller.createPreference(mContext, providerInfo1); SwitchPreference pref = controller.createPreference(mContext, providerInfo1);
assertThat(pref.getTitle().toString()).isEqualTo("Service Title"); assertThat(pref.getTitle().toString()).isEqualTo("Service Title");
assertThat(pref.isChecked()).isTrue(); assertThat(pref.isChecked()).isTrue();
assertThat(pref.getSummary()).isNull();
// Create the pref (not checked). // Create the pref (not checked).
SwitchPreference pref2 = controller.createPreference(mContext, providerInfo2); SwitchPreference pref2 = controller.createPreference(mContext, providerInfo2);
assertThat(pref2.getTitle().toString()).isEqualTo("Service Title"); assertThat(pref2.getTitle().toString()).isEqualTo("Service Title");
assertThat(pref2.isChecked()).isFalse(); assertThat(pref2.isChecked()).isFalse();
assertThat(pref2.getSummary().toString()).isEqualTo("Summary Text");
} }
@Test @Test
@@ -264,6 +266,15 @@ public class CredentialManagerPreferenceControllerTest {
private CredentialProviderInfo createCredentialProviderInfo( private CredentialProviderInfo createCredentialProviderInfo(
String packageName, String className, CharSequence label, boolean isEnabled) { String packageName, String className, CharSequence label, boolean isEnabled) {
return createCredentialProviderInfo(packageName, className, label, isEnabled, null);
}
private CredentialProviderInfo createCredentialProviderInfo(
String packageName,
String className,
CharSequence label,
boolean isEnabled,
CharSequence subtitle) {
ServiceInfo si = new ServiceInfo(); ServiceInfo si = new ServiceInfo();
si.packageName = packageName; si.packageName = packageName;
si.name = className; si.name = className;
@@ -276,6 +287,7 @@ public class CredentialManagerPreferenceControllerTest {
return new CredentialProviderInfo.Builder(si) return new CredentialProviderInfo.Builder(si)
.setOverrideLabel(label) .setOverrideLabel(label)
.setEnabled(isEnabled) .setEnabled(isEnabled)
.setSettingsSubtitle(subtitle)
.build(); .build();
} }
} }