Properly handle the autofill provider names, making sure place holder
name is properly filtered out.

Bug: 337040395
Test: locally built and tested
Change-Id: I081064c6103f79fe966a36d0eea854ee9893bce3
diff --git a/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java b/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java
index 1adbbaf..f07241a 100644
--- a/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java
+++ b/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java
@@ -521,16 +521,7 @@
         // Get the selected autofill provider. If it is the placeholder then replace it with an
         // empty string.
         String selectedAutofillProvider =
-                DefaultCombinedPicker.getSelectedAutofillProvider(mContext, getUser());
-        String credentialAutofillService = "";
-        if (android.service.autofill.Flags.autofillCredmanDevIntegration()) {
-            credentialAutofillService = getCredentialAutofillService(mContext, TAG);
-        }
-        if (TextUtils.equals(selectedAutofillProvider, credentialAutofillService)
-                || TextUtils.equals(
-                        selectedAutofillProvider, AUTOFILL_CREDMAN_ONLY_PROVIDER_PLACEHOLDER)) {
-            selectedAutofillProvider = "";
-        }
+                getSelectedAutofillProvider(mContext, getUser(), TAG);
 
         // Get the list of combined providers.
         List<CombinedProviderInfo> providers =
@@ -695,6 +686,31 @@
         return "";
     }
 
+    /** Gets the selected autofill provider name. This will filter out place holder names. **/
+    public static @Nullable String getSelectedAutofillProvider(
+            Context context, int userId, String tag) {
+        String providerName = Settings.Secure.getStringForUser(
+                context.getContentResolver(), Settings.Secure.AUTOFILL_SERVICE, userId);
+
+        if (TextUtils.isEmpty(providerName)) {
+            return providerName;
+        }
+
+        if (providerName.equals(AUTOFILL_CREDMAN_ONLY_PROVIDER_PLACEHOLDER)) {
+            return "";
+        }
+
+        String credentialAutofillService = "";
+        if (android.service.autofill.Flags.autofillCredmanDevIntegration()) {
+            credentialAutofillService = getCredentialAutofillService(context, tag);
+        }
+        if (providerName.equals(credentialAutofillService)) {
+            return "";
+        }
+
+        return providerName;
+    }
+
     private CombiPreference addProviderPreference(
             @NonNull Context prefContext,
             @NonNull CharSequence title,
diff --git a/src/com/android/settings/applications/credentials/DefaultCombinedPicker.java b/src/com/android/settings/applications/credentials/DefaultCombinedPicker.java
index 8bc0bca..f422411 100644
--- a/src/com/android/settings/applications/credentials/DefaultCombinedPicker.java
+++ b/src/com/android/settings/applications/credentials/DefaultCombinedPicker.java
@@ -275,15 +275,13 @@
                             CredentialManager.PROVIDER_FILTER_USER_PROVIDERS_INCLUDING_HIDDEN));
         }
 
-        final String selectedAutofillProvider = getSelectedAutofillProvider(context, userId);
+        final String selectedAutofillProvider =
+                CredentialManagerPreferenceController
+                    .getSelectedAutofillProvider(context, userId, TAG);
         return CombinedProviderInfo.buildMergedList(
                 autofillProviders, credManProviders, selectedAutofillProvider);
     }
 
-    public static String getSelectedAutofillProvider(Context context, int userId) {
-        return Settings.Secure.getStringForUser(
-                context.getContentResolver(), AUTOFILL_SETTING, userId);
-    }
 
     protected List<DefaultAppInfo> getCandidates() {
         final Context context = getContext();
diff --git a/src/com/android/settings/applications/credentials/DefaultCombinedPreferenceController.java b/src/com/android/settings/applications/credentials/DefaultCombinedPreferenceController.java
index 57cd1d2..33d9067 100644
--- a/src/com/android/settings/applications/credentials/DefaultCombinedPreferenceController.java
+++ b/src/com/android/settings/applications/credentials/DefaultCombinedPreferenceController.java
@@ -183,16 +183,15 @@
         final List<AutofillServiceInfo> autofillProviders =
                 AutofillServiceInfo.getAvailableServices(mContext, userId);
         final String selectedAutofillProvider =
-                Settings.Secure.getStringForUser(
-                        mContext.getContentResolver(),
-                        DefaultCombinedPicker.AUTOFILL_SETTING,
-                        userId);
+                CredentialManagerPreferenceController
+                .getSelectedAutofillProvider(mContext, userId, TAG);
 
         final List<CredentialProviderInfo> credManProviders = new ArrayList<>();
         if (mCredentialManager != null) {
             credManProviders.addAll(
                     mCredentialManager.getCredentialProviderServices(
-                            userId, CredentialManager.PROVIDER_FILTER_USER_PROVIDERS_ONLY));
+                            userId,
+                            CredentialManager.PROVIDER_FILTER_USER_PROVIDERS_INCLUDING_HIDDEN));
         }
 
         return CombinedProviderInfo.buildMergedList(
@@ -226,6 +225,12 @@
             return;
         }
 
+        // Clean the autofill provider settings
+        Settings.Secure.putStringForUser(
+                mContext.getContentResolver(),
+                DefaultCombinedPicker.AUTOFILL_SETTING, null, getUser());
+
+        // Clean the credman provider settings.
         mCredentialManager.setEnabledProviders(
                 List.of(), // empty primary provider.
                 List.of(), // empty enabled providers.