Replace credential provider placeholder

Replace credential provider placeholder with the actual credential
autofill provider.

Bug: 330177328
Test: cts
Change-Id: Ib6c9688b3f728706b1f5ac0faa3f042bb6dc447c
This commit is contained in:
Daniel
2024-04-18 07:24:07 +00:00
parent 02f1db61d8
commit 385f5a0c7b
2 changed files with 32 additions and 10 deletions

View File

@@ -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<CredentialProviderInfo> mServices;
private final Set<String> 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,

View File

@@ -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<String> 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;
}
}
}