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

Commit 99f1d544 authored by Becca Hughes's avatar Becca Hughes
Browse files

DO NOT MERGE Hide provider from this list if autofill provider

Since we are merging the two lists we should
hide the provider from this list to avoid
duplicates.

Test: local & unit
Bug: 279205251
Change-Id: I70ec4a4bda13bdcd5fd8f82f6ba6045e94d5daa9
parent 39b73e1f
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -348,6 +348,10 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl
        Map<String, List<CredentialProviderInfo>> groupedInfos = new HashMap<>();
        for (CredentialProviderInfo cpi : mServices) {
            String packageName = cpi.getServiceInfo().packageName;
            if (isProviderHiddenBecauseOfAutofill(packageName)) {
                continue;
            }

            if (!groupedInfos.containsKey(packageName)) {
                groupedInfos.put(packageName, new ArrayList<>());
            }
@@ -551,6 +555,23 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl
        return new NewProviderConfirmationDialogFragment(host, packageName, appName);
    }

    /** If the provider is also the autofill provider then hide it. */
    @VisibleForTesting
    public boolean isProviderHiddenBecauseOfAutofill(String packageName) {
        final String autofillService = Settings.Secure.getStringForUser(
                mContext.getContentResolver(),
                Settings.Secure.AUTOFILL_SERVICE,
                getUser());
        if (autofillService == null || TextUtils.isEmpty(autofillService)) {
            return false;
        }
        if (packageName == null || TextUtils.isEmpty(packageName)) {
            return false;
        }

        return autofillService.startsWith(packageName);
    }

    @VisibleForTesting
    void completeEnableProviderDialogBox(
            int whichButton, String packageName, boolean setActivityResult) {
+19 −0
Original line number Diff line number Diff line
@@ -122,6 +122,25 @@ public class CredentialManagerPreferenceControllerTest {
        assertThat(controller.getAvailabilityStatus()).isEqualTo(AVAILABLE);
    }

    @Test
    public void verifyHiddenIfAutofillSelectedProvider() {
        CredentialManagerPreferenceController controller =
                createControllerWithServices(Collections.emptyList());

        // Set the autofill provider.
        Settings.Secure.putStringForUser(mContext.getContentResolver(),
                Settings.Secure.AUTOFILL_SERVICE, "com.example.test/AutofillClass",
                UserHandle.myUserId());

        // Verify the error cases
        assertThat(controller.isProviderHiddenBecauseOfAutofill(null)).isFalse();
        assertThat(controller.isProviderHiddenBecauseOfAutofill("")).isFalse();
        assertThat(controller.isProviderHiddenBecauseOfAutofill("test")).isFalse();

        // Verify the example.
        assertThat(controller.isProviderHiddenBecauseOfAutofill("com.example.test")).isTrue();
    }

    @Test
    public void displayPreference_noServices_noPreferencesAdded_useAutofillUri() {
        Settings.Secure.putStringForUser(