Add id to the bundle so jetpack can access it
Test: built locally
Change-Id: If3df12fc32c21197c4c3847257874a6ae4fc1666
diff --git a/core/java/android/service/credentials/BeginGetCredentialOption.java b/core/java/android/service/credentials/BeginGetCredentialOption.java
index 1df908a..3d39f65 100644
--- a/core/java/android/service/credentials/BeginGetCredentialOption.java
+++ b/core/java/android/service/credentials/BeginGetCredentialOption.java
@@ -39,6 +39,8 @@
*/
@SuppressLint("ParcelNotFinal")
public class BeginGetCredentialOption implements Parcelable {
+ private static final String BUNDLE_ID_KEY =
+ "android.service.credentials.BeginGetCredentialOption.BUNDLE_ID_KEY";
/**
* A unique id associated with this request option.
*/
@@ -129,6 +131,11 @@
mType = Preconditions.checkStringNotEmpty(type, "type must not be empty");
mCandidateQueryData = requireNonNull(
candidateQueryData, "candidateQueryData must not be null");
+ addIdToBundle();
+ }
+
+ private void addIdToBundle() {
+ mCandidateQueryData.putString(BUNDLE_ID_KEY, mId);
}
private BeginGetCredentialOption(@NonNull Parcel in) {
diff --git a/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java b/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java
index 9033abc..c0c992c 100644
--- a/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java
+++ b/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java
@@ -93,13 +93,14 @@
if (propagateToProvider) {
return new BeginCreateCredentialRequest(
type,
- candidateQueryData
+ candidateQueryData,
+ callingAppInfo
);
}
return new BeginCreateCredentialRequest(
type,
- candidateQueryData,
- callingAppInfo);
+ candidateQueryData
+ );
}
@Nullable
diff --git a/services/credentials/java/com/android/server/credentials/ProviderGetSession.java b/services/credentials/java/com/android/server/credentials/ProviderGetSession.java
index 496a6d1..5467c84 100644
--- a/services/credentials/java/com/android/server/credentials/ProviderGetSession.java
+++ b/services/credentials/java/com/android/server/credentials/ProviderGetSession.java
@@ -303,18 +303,20 @@
Log.i(TAG, "in prepareUiProviderData creating ui entry with id " + entryId);
credentialUiEntries.add(new Entry(CREDENTIAL_ENTRY_KEY, entryId,
credentialEntry.getSlice(),
- /*fillInIntent=*/setUpFillInIntent(credentialEntry.getType())));
+ /*fillInIntent=*/setUpFillInIntent(credentialEntry
+ .getBeginGetCredentialOption().getId())));
}
return credentialUiEntries;
}
- private Intent setUpFillInIntent(@Nullable String id) {
+ private Intent setUpFillInIntent(@NonNull String id) {
// TODO: Determine if we should skip this entry if entry id is not set, or is set
// but does not resolve to a valid option. For now, not skipping it because
// it may be possible that the provider adds their own extras and expects to receive
// those and complete the flow.
- if (id == null || mBeginGetOptionToCredentialOptionMap.get(id) == null) {
+ if (mBeginGetOptionToCredentialOptionMap.get(id) == null) {
Log.i(TAG, "Id from Credential Entry does not resolve to a valid option");
+ return new Intent();
}
return new Intent().putExtra(CredentialProviderService.EXTRA_GET_CREDENTIAL_REQUEST,
new GetCredentialRequest(