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

Commit da213ccf authored by Reema Bajwa's avatar Reema Bajwa
Browse files

Add request to remote entry pendingIntent for get/create

Test: built & deployed locally

Change-Id: Ibebffacca3fe3d4abc7fcc308dd1cb55ee658a21
parent e1c119c7
Loading
Loading
Loading
Loading
+17 −3
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ import android.service.credentials.CreateEntry;
import android.service.credentials.CredentialProviderInfo;
import android.service.credentials.CredentialProviderService;
import android.util.Log;
import android.util.Pair;
import android.util.Slog;

import java.util.ArrayList;
@@ -62,6 +63,8 @@ public final class ProviderCreateSession extends ProviderSession<

    private CreateCredentialException mProviderException;

    @Nullable protected Pair<String, CreateEntry> mUiRemoteEntry;

    /** Creates a new provider session to be used by the request session. */
    @Nullable public static ProviderCreateSession createNewSession(
            Context context,
@@ -185,11 +188,21 @@ public final class ProviderCreateSession extends ProviderSession<
            Log.i(TAG, "In prepareUiData save entries not null");
            return prepareUiProviderData(
                    prepareUiSaveEntries(response.getCreateEntries()),
                    null,
                    /*isDefaultProvider=*/false);
                    prepareUiRemoteEntry(response.getRemoteCreateEntry()));
        }
        return null;
    }

    private Entry prepareUiRemoteEntry(CreateEntry remoteCreateEntry) {
        if (remoteCreateEntry == null) {
            return null;
        }
        String entryId = generateUniqueId();
        Entry remoteEntry = new Entry(REMOTE_ENTRY_KEY, entryId, remoteCreateEntry.getSlice(),
                setUpFillInIntent());
        mUiRemoteEntry = new Pair<>(entryId, remoteCreateEntry);
        return remoteEntry;
    }

    @Override
    public void onUiEntrySelected(String entryType, String entryKey,
@@ -246,10 +259,11 @@ public final class ProviderCreateSession extends ProviderSession<
    }

    private CreateCredentialProviderData prepareUiProviderData(List<Entry> saveEntries,
            Entry remoteEntry, boolean isDefaultProvider) {
            Entry remoteEntry) {
        return new CreateCredentialProviderData.Builder(
                mComponentName.flattenToString())
                .setSaveEntries(saveEntries)
                .setRemoteEntry(remoteEntry)
                .build();
    }

+4 −1
Original line number Diff line number Diff line
@@ -75,6 +75,8 @@ public final class ProviderGetSession extends ProviderSession<BeginGetCredential
    @Nullable
    private final Map<String, Action> mUiAuthenticationEntries = new HashMap<>();

    @Nullable protected Pair<String, CredentialEntry> mUiRemoteEntry;

    /** The complete request to be used in the second round. */
    private final android.credentials.GetCredentialRequest mCompleteRequest;
    private final CallingAppInfo mCallingAppInfo;
@@ -271,7 +273,8 @@ public final class ProviderGetSession extends ProviderSession<BeginGetCredential
            return null;
        }
        String entryId = generateUniqueId();
        Entry remoteEntry = new Entry(REMOTE_ENTRY_KEY, entryId, remoteCredentialEntry.getSlice());
        Entry remoteEntry = new Entry(REMOTE_ENTRY_KEY, entryId, remoteCredentialEntry.getSlice(),
                setUpFillInIntent(remoteCredentialEntry.getType()));
        mUiRemoteEntry = new Pair<>(entryId, remoteCredentialEntry);
        return remoteEntry;
    }
+1 −3
Original line number Diff line number Diff line
@@ -25,10 +25,8 @@ import android.credentials.ui.ProviderData;
import android.credentials.ui.ProviderPendingIntentResponse;
import android.os.ICancellationSignal;
import android.os.RemoteException;
import android.service.credentials.CredentialEntry;
import android.service.credentials.CredentialProviderInfo;
import android.util.Log;
import android.util.Pair;

import java.util.UUID;

@@ -54,7 +52,7 @@ public abstract class ProviderSession<T, R>
    @NonNull protected final T mProviderRequest;
    @Nullable protected R mProviderResponse;
    @NonNull protected Boolean mProviderResponseSet = false;
    @Nullable protected Pair<String, CredentialEntry> mUiRemoteEntry;



    /**