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

Commit 4c657e36 authored by Becca Hughes's avatar Becca Hughes Committed by Automerger Merge Worker
Browse files

Use isPrimary bit to determine top provider am: 30969977

parents 983c8081 30969977
Loading
Loading
Loading
Loading
+15 −9
Original line number Diff line number Diff line
@@ -43,18 +43,18 @@ public final class CombinedProviderInfo {
    private final List<CredentialProviderInfo> mCredentialProviderInfos;
    private final @Nullable AutofillServiceInfo mAutofillServiceInfo;
    private final boolean mIsDefaultAutofillProvider;
    private final boolean mIsDefaultCredmanProvider;
    private final boolean mIsPrimaryCredmanProvider;

    /** Constructs an information instance from both autofill and credential provider. */
    public CombinedProviderInfo(
            @Nullable List<CredentialProviderInfo> cpis,
            @Nullable AutofillServiceInfo asi,
            boolean isDefaultAutofillProvider,
            boolean isDefaultCredmanProvider) {
            boolean IsPrimaryCredmanProvider) {
        mCredentialProviderInfos = new ArrayList<>(cpis);
        mAutofillServiceInfo = asi;
        mIsDefaultAutofillProvider = isDefaultAutofillProvider;
        mIsDefaultCredmanProvider = isDefaultCredmanProvider;
        mIsPrimaryCredmanProvider = IsPrimaryCredmanProvider;
    }

    /** Returns the credential provider info. */
@@ -149,8 +149,8 @@ public final class CombinedProviderInfo {
    }

    /** Returns whether the provider is the default credman provider. */
    public boolean isDefaultCredmanProvider() {
        return mIsDefaultCredmanProvider;
    public boolean isPrimaryCredmanProvider() {
        return mIsPrimaryCredmanProvider;
    }

    /** Returns the settings subtitle. */
@@ -192,7 +192,13 @@ public final class CombinedProviderInfo {
            }
        }

        // TODO(280454916): Add logic here.
        // If there is a primary cred man provider then return that.
        for (CombinedProviderInfo cpi : providers) {
            if (cpi.isPrimaryCredmanProvider()) {
                return cpi;
            }
        }

        return null;
    }

@@ -250,14 +256,14 @@ public final class CombinedProviderInfo {
            }

            // Check if we have any enabled cred man services.
            boolean isDefaultCredmanProvider = false;
            boolean isPrimaryCredmanProvider = false;
            if (!cpi.isEmpty()) {
                isDefaultCredmanProvider = cpi.get(0).isEnabled();
                isPrimaryCredmanProvider = cpi.get(0).isPrimary();
            }

            cmpi.add(
                    new CombinedProviderInfo(
                            cpi, selectedAsi, isDefaultAutofillProvider, isDefaultCredmanProvider));
                            cpi, selectedAsi, isDefaultAutofillProvider, isPrimaryCredmanProvider));
        }

        return cmpi;
+13 −4
Original line number Diff line number Diff line
@@ -321,7 +321,7 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl

        mEnabledPackageNames.clear();
        for (CredentialProviderInfo cpi : availableServices) {
            if (cpi.isEnabled()) {
            if (cpi.isEnabled() && !cpi.isPrimary()) {
                mEnabledPackageNames.add(cpi.getServiceInfo().packageName);
            }
        }
@@ -560,16 +560,25 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl
            return;
        }

        List<String> enabledServices = getEnabledSettings();
        // Get the existing primary providers since we don't touch them in
        // this part of the UI we should just copy them over.
        Set<String> primaryServices = new HashSet<>();
        for (CredentialProviderInfo service : mServices) {
            if (service.isPrimary()) {
                primaryServices.add(service.getServiceInfo().getComponentName().flattenToString());
            }
        }

        mCredentialManager.setEnabledProviders(
                new ArrayList<String>(), // TODO(240466271): pass down primary providers
                enabledServices,
                new ArrayList<>(primaryServices),
                getEnabledSettings(),
                getUser(),
                mExecutor,
                new OutcomeReceiver<Void, SetEnabledProvidersException>() {
                    @Override
                    public void onResult(Void result) {
                        Log.i(TAG, "setEnabledProviders success");
                        updateFromExternal();
                    }

                    @Override
+18 −4
Original line number Diff line number Diff line
@@ -47,7 +47,9 @@ import com.android.settingslib.utils.ThreadUtils;
import com.android.settingslib.widget.CandidateInfo;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class DefaultCombinedPicker extends DefaultAppPickerFragment {

@@ -338,9 +340,9 @@ public class DefaultCombinedPicker extends DefaultAppPickerFragment {
        return true;
    }

    private void setProviders(String autofillProvider, List<String> credManProviders) {
    private void setProviders(String autofillProvider, List<String> primaryCredManProviders) {
        if (TextUtils.isEmpty(autofillProvider)) {
            if (credManProviders.size() > 0) {
            if (primaryCredManProviders.size() > 0) {
                autofillProvider =
                        CredentialManagerPreferenceController
                                .AUTOFILL_CREDMAN_ONLY_PROVIDER_PLACEHOLDER;
@@ -350,13 +352,25 @@ public class DefaultCombinedPicker extends DefaultAppPickerFragment {
        Settings.Secure.putStringForUser(
                getContext().getContentResolver(), AUTOFILL_SETTING, autofillProvider, mUserId);

        CredentialManager service = getCredentialProviderService();
        final CredentialManager service = getCredentialProviderService();
        if (service == null) {
            return;
        }

        // Get the existing secondary providers since we don't touch them in
        // this part of the UI we should just copy them over.
        final List<String> credManProviders = new ArrayList<>();
        for (CredentialProviderInfo cpi :
                service.getCredentialProviderServices(
                        mUserId, CredentialManager.PROVIDER_FILTER_USER_PROVIDERS_ONLY)) {

            if (cpi.isEnabled()) {
                credManProviders.add(cpi.getServiceInfo().getComponentName().flattenToString());
            }
        }

        service.setEnabledProviders(
                new ArrayList<String>(), // TODO(240466271): pass down primary providers.
                primaryCredManProviders,
                credManProviders,
                mUserId,
                ContextCompat.getMainExecutor(getContext()),
+6 −7
Original line number Diff line number Diff line
@@ -135,12 +135,12 @@ public class DefaultCombinedPreferenceController extends DefaultAppPreferenceCon
    /** Provides Intent to setting activity for the specified autofill service. */
    static final class AutofillSettingIntentProvider {

        private final String mSelectedKey;
        private final String mKey;
        private final Context mContext;
        private final int mUserId;

        public AutofillSettingIntentProvider(Context context, int userId, String key) {
            mSelectedKey = key;
            mKey = key;
            mContext = context;
            mUserId = userId;
        }
@@ -153,10 +153,9 @@ public class DefaultCombinedPreferenceController extends DefaultAppPreferenceCon

            for (ResolveInfo resolveInfo : resolveInfos) {
                final ServiceInfo serviceInfo = resolveInfo.serviceInfo;
                final String flattenKey =
                        new ComponentName(serviceInfo.packageName, serviceInfo.name)
                                .flattenToString();
                if (TextUtils.equals(mSelectedKey, flattenKey)) {

                // If there are multiple autofill services then pick the first one.
                if (mKey.startsWith(serviceInfo.packageName)) {
                    final String settingsActivity;
                    try {
                        settingsActivity =
@@ -164,7 +163,7 @@ public class DefaultCombinedPreferenceController extends DefaultAppPreferenceCon
                                        .getSettingsActivity();
                    } catch (SecurityException e) {
                        // Service does not declare the proper permission, ignore it.
                        Log.w(TAG, "Error getting info for " + serviceInfo + ": " + e);
                        Log.e(TAG, "Error getting info for " + serviceInfo + ": " + e);
                        return null;
                    }
                    if (TextUtils.isEmpty(settingsActivity)) {