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 { implements LifecycleObserver {
public static final String ADD_SERVICE_DEVICE_CONFIG = "credential_manager_service_search_uri"; 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 * 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 * 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"; 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 PackageManager mPm;
private final List<CredentialProviderInfo> mServices; private final List<CredentialProviderInfo> mServices;
private final Set<String> mEnabledPackageNames; private final Set<String> mEnabledPackageNames;
@@ -494,7 +494,12 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl
// empty string. // empty string.
String selectedAutofillProvider = String selectedAutofillProvider =
DefaultCombinedPicker.getSelectedAutofillProvider(mContext, getUser()); DefaultCombinedPicker.getSelectedAutofillProvider(mContext, getUser());
if (TextUtils.equals( 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, AUTOFILL_CREDMAN_ONLY_PROVIDER_PLACEHOLDER)) {
selectedAutofillProvider = ""; selectedAutofillProvider = "";
} }
@@ -652,6 +657,17 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl
return (enabledAdditionalProviderCount + 1) >= MAX_SELECTABLE_PROVIDERS; 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( private CombiPreference addProviderPreference(
@NonNull Context prefContext, @NonNull Context prefContext,
@NonNull CharSequence title, @NonNull CharSequence title,

View File

@@ -16,6 +16,8 @@
package com.android.settings.applications.credentials; package com.android.settings.applications.credentials;
import static com.android.settings.applications.credentials.CredentialManagerPreferenceController.getCredentialAutofillService;
import android.app.Activity; import android.app.Activity;
import android.app.settings.SettingsEnums; import android.app.settings.SettingsEnums;
import android.content.Context; import android.content.Context;
@@ -463,11 +465,15 @@ public class DefaultCombinedPicker extends DefaultAppPickerFragment {
private void setProviders(String autofillProvider, List<String> primaryCredManProviders) { private void setProviders(String autofillProvider, List<String> primaryCredManProviders) {
if (TextUtils.isEmpty(autofillProvider)) { if (TextUtils.isEmpty(autofillProvider)) {
if (primaryCredManProviders.size() > 0) { if (primaryCredManProviders.size() > 0) {
if (android.service.autofill.Flags.autofillCredmanDevIntegration()) {
autofillProvider = getCredentialAutofillService(getContext(), TAG);
} else {
autofillProvider = autofillProvider =
CredentialManagerPreferenceController CredentialManagerPreferenceController
.AUTOFILL_CREDMAN_ONLY_PROVIDER_PLACEHOLDER; .AUTOFILL_CREDMAN_ONLY_PROVIDER_PLACEHOLDER;
} }
} }
}
Settings.Secure.putStringForUser( Settings.Secure.putStringForUser(
getContext().getContentResolver(), AUTOFILL_SETTING, autofillProvider, getUser()); getContext().getContentResolver(), AUTOFILL_SETTING, autofillProvider, getUser());