Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6474e013 authored by Becca Hughes's avatar Becca Hughes
Browse files

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
parent 53936d0e
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -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();
+14 −2
Original line number Diff line number Diff line
@@ -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();
    }
}