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,
|
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();
|
||||||
|
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user