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:
@@ -176,7 +176,8 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl
|
||||
context,
|
||||
label == null ? "" : label,
|
||||
service.getServiceIcon(mContext),
|
||||
service.getServiceInfo().packageName);
|
||||
service.getServiceInfo().packageName,
|
||||
service.getSettingsSubtitle());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -234,7 +235,8 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl
|
||||
@NonNull Context prefContext,
|
||||
@NonNull CharSequence title,
|
||||
@Nullable Drawable icon,
|
||||
@NonNull String packageName) {
|
||||
@NonNull String packageName,
|
||||
@Nullable CharSequence subtitle) {
|
||||
final SwitchPreference pref = new SwitchPreference(prefContext);
|
||||
pref.setTitle(title);
|
||||
pref.setChecked(mEnabledPackageNames.contains(packageName));
|
||||
@@ -244,6 +246,10 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl
|
||||
pref.setIcon(Utils.getSafeIcon(icon));
|
||||
}
|
||||
|
||||
if (subtitle != null) {
|
||||
pref.setSummary(subtitle);
|
||||
}
|
||||
|
||||
pref.setOnPreferenceClickListener(
|
||||
p -> {
|
||||
boolean isChecked = pref.isChecked();
|
||||
|
@@ -115,10 +115,10 @@ public class CredentialManagerPreferenceControllerTest {
|
||||
public void buildSwitchPreference() {
|
||||
CredentialProviderInfo providerInfo1 =
|
||||
createCredentialProviderInfo(
|
||||
"com.android.provider1", "ClassA", "Service Title", false);
|
||||
"com.android.provider1", "ClassA", "Service Title", false, null);
|
||||
CredentialProviderInfo providerInfo2 =
|
||||
createCredentialProviderInfo(
|
||||
"com.android.provider2", "ClassA", "Service Title", false);
|
||||
"com.android.provider2", "ClassA", "Service Title", false, "Summary Text");
|
||||
CredentialManagerPreferenceController controller =
|
||||
createControllerWithServices(Lists.newArrayList(providerInfo1, providerInfo2));
|
||||
assertThat(controller.getAvailabilityStatus()).isEqualTo(AVAILABLE);
|
||||
@@ -139,11 +139,13 @@ public class CredentialManagerPreferenceControllerTest {
|
||||
SwitchPreference pref = controller.createPreference(mContext, providerInfo1);
|
||||
assertThat(pref.getTitle().toString()).isEqualTo("Service Title");
|
||||
assertThat(pref.isChecked()).isTrue();
|
||||
assertThat(pref.getSummary()).isNull();
|
||||
|
||||
// Create the pref (not checked).
|
||||
SwitchPreference pref2 = controller.createPreference(mContext, providerInfo2);
|
||||
assertThat(pref2.getTitle().toString()).isEqualTo("Service Title");
|
||||
assertThat(pref2.isChecked()).isFalse();
|
||||
assertThat(pref2.getSummary().toString()).isEqualTo("Summary Text");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -264,6 +266,15 @@ public class CredentialManagerPreferenceControllerTest {
|
||||
|
||||
private CredentialProviderInfo createCredentialProviderInfo(
|
||||
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();
|
||||
si.packageName = packageName;
|
||||
si.name = className;
|
||||
@@ -276,6 +287,7 @@ public class CredentialManagerPreferenceControllerTest {
|
||||
return new CredentialProviderInfo.Builder(si)
|
||||
.setOverrideLabel(label)
|
||||
.setEnabled(isEnabled)
|
||||
.setSettingsSubtitle(subtitle)
|
||||
.build();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user