diff --git a/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java b/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java index a92b755331c..4619bdade5a 100644 --- a/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java +++ b/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java @@ -87,6 +87,11 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl implements LifecycleObserver { public static final String ADD_SERVICE_DEVICE_CONFIG = "credential_manager_service_search_uri"; + private static final String TAG = "CredentialManagerPreferenceController"; + private static final String ALTERNATE_INTENT = "android.settings.SYNC_SETTINGS"; + private static final String PRIMARY_INTENT = "android.settings.CREDENTIAL_PROVIDER"; + private static final int MAX_SELECTABLE_PROVIDERS = 5; + /** * In the settings logic we should hide the list of additional credman providers if there is no * provider selected at the top. The current logic relies on checking whether the autofill @@ -95,11 +100,6 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl */ public static final String AUTOFILL_CREDMAN_ONLY_PROVIDER_PLACEHOLDER = "credential-provider"; - private static final String TAG = "CredentialManagerPreferenceController"; - private static final String ALTERNATE_INTENT = "android.settings.SYNC_SETTINGS"; - private static final String PRIMARY_INTENT = "android.settings.CREDENTIAL_PROVIDER"; - private static final int MAX_SELECTABLE_PROVIDERS = 5; - private final PackageManager mPm; private final List mServices; private final Set mEnabledPackageNames; @@ -494,8 +494,13 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl // empty string. String selectedAutofillProvider = DefaultCombinedPicker.getSelectedAutofillProvider(mContext, getUser()); - if (TextUtils.equals( - selectedAutofillProvider, AUTOFILL_CREDMAN_ONLY_PROVIDER_PLACEHOLDER)) { + 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 = ""; } @@ -652,6 +657,17 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl return (enabledAdditionalProviderCount + 1) >= MAX_SELECTABLE_PROVIDERS; } + /** Gets the credential autofill service component name. */ + public static String getCredentialAutofillService(Context context, String tag) { + try { + return context.getResources().getString( + com.android.internal.R.string.config_defaultCredentialManagerAutofillService); + } catch (Resources.NotFoundException e) { + Log.e(tag, "Failed to find credential autofill service.", e); + } + return ""; + } + 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 6fdcf675e9f..8bc0bca627b 100644 --- a/src/com/android/settings/applications/credentials/DefaultCombinedPicker.java +++ b/src/com/android/settings/applications/credentials/DefaultCombinedPicker.java @@ -16,6 +16,8 @@ package com.android.settings.applications.credentials; +import static com.android.settings.applications.credentials.CredentialManagerPreferenceController.getCredentialAutofillService; + import android.app.Activity; import android.app.settings.SettingsEnums; import android.content.Context; @@ -463,9 +465,13 @@ public class DefaultCombinedPicker extends DefaultAppPickerFragment { private void setProviders(String autofillProvider, List primaryCredManProviders) { if (TextUtils.isEmpty(autofillProvider)) { if (primaryCredManProviders.size() > 0) { - autofillProvider = - CredentialManagerPreferenceController - .AUTOFILL_CREDMAN_ONLY_PROVIDER_PLACEHOLDER; + if (android.service.autofill.Flags.autofillCredmanDevIntegration()) { + autofillProvider = getCredentialAutofillService(getContext(), TAG); + } else { + autofillProvider = + CredentialManagerPreferenceController + .AUTOFILL_CREDMAN_ONLY_PROVIDER_PLACEHOLDER; + } } }