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

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

Merge "Fix isPrimary bit not being set" into udc-qpr-dev am: aec6d9da

parents 0637380a aec6d9da
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1174,6 +1174,7 @@ package android.credentials {
    method @Nullable public CharSequence getSettingsSubtitle();
    method @NonNull public boolean hasCapability(@NonNull String);
    method public boolean isEnabled();
    method public boolean isPrimary();
    method public boolean isSystemProvider();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.credentials.CredentialProviderInfo> CREATOR;
+0 −1
Original line number Diff line number Diff line
@@ -113,7 +113,6 @@ public final class CredentialProviderInfo implements Parcelable {
    /**
     * Returns whether the provider is set as primary by the user.
     *
     * @hide
     */
    public boolean isPrimary() {
        return mIsPrimary;
+6 −6
Original line number Diff line number Diff line
@@ -415,7 +415,8 @@ public final class CredentialProviderInfoFactory {
                                si,
                                /* isSystemProvider= */ true,
                                disableSystemAppVerificationForTests,
                                enabledServices.contains(si.getComponentName()), false);
                                enabledServices.contains(si.getComponentName()),
                                false);
                if (cpi.isSystemProvider()) {
                    providerInfos.add(cpi);
                } else {
@@ -454,7 +455,7 @@ public final class CredentialProviderInfoFactory {
            int userId,
            int providerFilter,
            Set<ComponentName> enabledServices,
            Set<String> primaryServices) {
            Set<ComponentName> primaryServices) {
        requireNonNull(context, "context must not be null");

        // Get the device policy.
@@ -488,7 +489,7 @@ public final class CredentialProviderInfoFactory {
            int userId,
            int providerFilter,
            Set<ComponentName> enabledServices,
            Set<String> primaryServices) {
            Set<ComponentName> primaryServices) {
        requireNonNull(context, "context must not be null");

        // Get the device policy.
@@ -599,7 +600,7 @@ public final class CredentialProviderInfoFactory {
            @UserIdInt int userId,
            boolean disableSystemAppVerificationForTests,
            Set<ComponentName> enabledServices,
            Set<String> primaryServices) {
            Set<ComponentName> primaryServices) {
        final List<CredentialProviderInfo> services = new ArrayList<>();
        final List<ResolveInfo> resolveInfos =
                context.getPackageManager()
@@ -622,8 +623,7 @@ public final class CredentialProviderInfoFactory {
                                /* isSystemProvider= */ false,
                                disableSystemAppVerificationForTests,
                                enabledServices.contains(serviceInfo.getComponentName()),
                                primaryServices.contains(
                                        serviceInfo.getComponentName().flattenToString()));
                                primaryServices.contains(serviceInfo.getComponentName()));
                if (!cpi.isSystemProvider()) {
                    services.add(cpi);
                }
+9 −3
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ import android.util.Slog;
import com.android.server.credentials.metrics.ProviderStatusForMetrics;

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

/**
@@ -49,7 +50,7 @@ public final class CreateRequestSession extends RequestSession<CreateCredentialR
        ICreateCredentialCallback, CreateCredentialResponse>
        implements ProviderSession.ProviderInternalCallback<CreateCredentialResponse> {
    private static final String TAG = "CreateRequestSession";
    private final Set<String> mPrimaryProviders;
    private final Set<ComponentName> mPrimaryProviders;

    CreateRequestSession(@NonNull Context context, RequestSession.SessionLifetime sessionCallback,
            Object lock, int userId, int callingUid,
@@ -57,7 +58,7 @@ public final class CreateRequestSession extends RequestSession<CreateCredentialR
            ICreateCredentialCallback callback,
            CallingAppInfo callingAppInfo,
            Set<ComponentName> enabledProviders,
            Set<String> primaryProviders,
            Set<ComponentName> primaryProviders,
            CancellationSignal cancellationSignal,
            long startedTimestamp) {
        super(context, sessionCallback, lock, userId, callingUid, request, callback,
@@ -96,13 +97,18 @@ public final class CreateRequestSession extends RequestSession<CreateCredentialR
        mCredentialManagerUi.setStatus(CredentialManagerUi.UiStatus.USER_INTERACTION);
        cancelExistingPendingIntent();
        try {
            List<String> flattenedPrimaryProviders = new ArrayList<>();
            for (ComponentName cn : mPrimaryProviders) {
                flattenedPrimaryProviders.add(cn.flattenToString());
            }

            mPendingIntent = mCredentialManagerUi.createPendingIntent(
                    RequestInfo.newCreateRequestInfo(
                            mRequestId, mClientRequest,
                            mClientAppInfo.getPackageName(),
                            PermissionUtils.hasPermission(mContext, mClientAppInfo.getPackageName(),
                                    Manifest.permission.CREDENTIAL_MANAGER_SET_ALLOWED_PROVIDERS),
                            /*defaultProviderId=*/new ArrayList<String>(mPrimaryProviders)),
                            /*defaultProviderId=*/flattenedPrimaryProviders),
                    providerDataList);
            mClientCallback.onPendingIntent(mPendingIntent);
        } catch (RemoteException e) {
+16 −4
Original line number Diff line number Diff line
@@ -69,7 +69,6 @@ import com.android.server.infra.AbstractMasterSystemService;
import com.android.server.infra.SecureSettingsServiceNameResolver;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashSet;
@@ -281,7 +280,7 @@ public final class CredentialManagerService
        }
    }

    private static Set<String> getPrimaryProvidersForUserId(Context context, int userId) {
    private static Set<ComponentName> getPrimaryProvidersForUserId(Context context, int userId) {
        final int resolvedUserId = ActivityManager.handleIncomingUser(
                Binder.getCallingPid(), Binder.getCallingUid(),
                userId, false, false,
@@ -291,9 +290,22 @@ public final class CredentialManagerService
                /* isMultipleMode= */ true);
        String[] serviceNames = resolver.readServiceNameList(resolvedUserId);
        if (serviceNames == null) {
            return new HashSet<String>();
            return new HashSet<ComponentName>();
        }
        return new HashSet<String>(Arrays.asList(serviceNames));

        Set<ComponentName> services = new HashSet<>();
        for (String serviceName : serviceNames) {
            ComponentName compName = ComponentName.unflattenFromString(serviceName);
            if (compName == null) {
                Slog.w(
                    TAG,
                    "Primary provider component name unflatten from string error: "
                            + serviceName);
                continue;
            }
            services.add(compName);
        }
        return services;
    }

    @GuardedBy("mLock")
Loading