Loading core/api/test-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -1181,6 +1181,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; Loading core/java/android/credentials/CredentialProviderInfo.java +0 −1 Original line number Diff line number Diff line Loading @@ -107,7 +107,6 @@ public final class CredentialProviderInfo implements Parcelable { /** * Returns whether the provider is set as primary by the user. * * @hide */ public boolean isPrimary() { return mIsPrimary; Loading core/java/android/service/credentials/CredentialProviderInfoFactory.java +6 −6 Original line number Diff line number Diff line Loading @@ -417,7 +417,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 { Loading Loading @@ -456,7 +457,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. Loading Loading @@ -490,7 +491,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. Loading Loading @@ -601,7 +602,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() Loading @@ -624,8 +625,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); } Loading services/credentials/java/com/android/server/credentials/CreateRequestSession.java +9 −3 Original line number Diff line number Diff line Loading @@ -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; /** Loading @@ -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, Loading @@ -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, Loading Loading @@ -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) { Loading services/credentials/java/com/android/server/credentials/CredentialManagerService.java +16 −4 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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, Loading @@ -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 Loading
core/api/test-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -1181,6 +1181,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; Loading
core/java/android/credentials/CredentialProviderInfo.java +0 −1 Original line number Diff line number Diff line Loading @@ -107,7 +107,6 @@ public final class CredentialProviderInfo implements Parcelable { /** * Returns whether the provider is set as primary by the user. * * @hide */ public boolean isPrimary() { return mIsPrimary; Loading
core/java/android/service/credentials/CredentialProviderInfoFactory.java +6 −6 Original line number Diff line number Diff line Loading @@ -417,7 +417,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 { Loading Loading @@ -456,7 +457,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. Loading Loading @@ -490,7 +491,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. Loading Loading @@ -601,7 +602,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() Loading @@ -624,8 +625,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); } Loading
services/credentials/java/com/android/server/credentials/CreateRequestSession.java +9 −3 Original line number Diff line number Diff line Loading @@ -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; /** Loading @@ -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, Loading @@ -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, Loading Loading @@ -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) { Loading
services/credentials/java/com/android/server/credentials/CredentialManagerService.java +16 −4 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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, Loading @@ -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