Merge "Propagate disabled providers to the credential manager UI app"
This commit is contained in:
@@ -17,8 +17,11 @@ package com.android.server.credentials;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ServiceInfo;
|
||||
import android.credentials.ui.DisabledProviderData;
|
||||
import android.credentials.ui.IntentFactory;
|
||||
import android.credentials.ui.ProviderData;
|
||||
import android.credentials.ui.RequestInfo;
|
||||
@@ -27,11 +30,14 @@ import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.os.ResultReceiver;
|
||||
import android.service.credentials.CredentialProviderInfo;
|
||||
import android.util.Log;
|
||||
import android.util.Slog;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/** Initiates the Credential Manager UI and receives results. */
|
||||
public class CredentialManagerUi {
|
||||
@@ -89,8 +95,27 @@ public class CredentialManagerUi {
|
||||
public PendingIntent createPendingIntent(
|
||||
RequestInfo requestInfo, ArrayList<ProviderData> providerDataList) {
|
||||
Log.i(TAG, "In createPendingIntent");
|
||||
Intent intent = IntentFactory.newIntent(requestInfo, providerDataList, new ArrayList<>(),
|
||||
mResultReceiver)
|
||||
|
||||
ArrayList<DisabledProviderData> disabledProviderDataList = new ArrayList<>();
|
||||
Set<String> enabledProviders = providerDataList.stream()
|
||||
.map(ProviderData::getProviderFlattenedComponentName)
|
||||
.collect(Collectors.toUnmodifiableSet());
|
||||
// TODO("Filter out non user configurable providers")
|
||||
Set<String> allProviders =
|
||||
CredentialProviderInfo.getAvailableServices(mContext, mUserId).stream()
|
||||
.map(CredentialProviderInfo::getServiceInfo)
|
||||
.map(ServiceInfo::getComponentName)
|
||||
.map(ComponentName::flattenToString)
|
||||
.collect(Collectors.toUnmodifiableSet());
|
||||
|
||||
for (String provider: allProviders) {
|
||||
if (!enabledProviders.contains(provider)) {
|
||||
disabledProviderDataList.add(new DisabledProviderData(provider));
|
||||
}
|
||||
}
|
||||
|
||||
Intent intent = IntentFactory.newIntent(requestInfo, providerDataList,
|
||||
disabledProviderDataList, mResultReceiver)
|
||||
.setAction(UUID.randomUUID().toString());
|
||||
//TODO: Create unique pending intent using request code and cancel any pre-existing pending
|
||||
// intents
|
||||
|
||||
Reference in New Issue
Block a user