Allow requests to require system providers.

With this bit set to true, a given request can only be fulfilled by
system providers matching the given credential type.

Bug: 246564035
Test: Local Build & Deployment
Change-Id: Ic842894bfa092e551f20a4f8c1a969395ede663f
This commit is contained in:
Helen Qin
2022-10-04 22:18:42 +00:00
parent d0724a9fbd
commit 9e5ed0027f
2 changed files with 92 additions and 8 deletions

View File

@@ -44,6 +44,11 @@ public final class CreateCredentialRequest implements Parcelable {
@NonNull
private final Bundle mData;
/**
* Determines whether or not the request must only be fulfilled by a system provider.
*/
private final boolean mRequireSystemProvider;
/**
* Returns the requested credential type.
*/
@@ -60,10 +65,21 @@ public final class CreateCredentialRequest implements Parcelable {
return mData;
}
/**
* Returns true if the request must only be fulfilled by a system provider, and false
* otherwise.
*
* @hide
*/
public boolean requireSystemProvider() {
return mRequireSystemProvider;
}
@Override
public void writeToParcel(@NonNull Parcel dest, int flags) {
dest.writeString8(mType);
dest.writeBundle(mData);
dest.writeBoolean(mRequireSystemProvider);
}
@Override
@@ -73,30 +89,56 @@ public final class CreateCredentialRequest implements Parcelable {
@Override
public String toString() {
return "CreateCredentialRequest {" + "type=" + mType + ", data=" + mData + "}";
return "CreateCredentialRequest {"
+ "type=" + mType
+ ", data=" + mData
+ ", requireSystemProvider=" + mRequireSystemProvider
+ "}";
}
/**
* Constructs a {@link CreateCredentialRequest}.
*
* @param type the requested credential type.
* @param data the request data.
* @param type the requested credential type
* @param data the request data
*
* @throws IllegalArgumentException If type is empty.
* @throws IllegalArgumentException If type is empty
*/
public CreateCredentialRequest(@NonNull String type, @NonNull Bundle data) {
this(type, data, /*requireSystemProvider=*/ false);
}
/**
* Constructs a {@link CreateCredentialRequest}.
*
* @param type the requested credential type
* @param data the request data
* @param requireSystemProvider whether or not the request must only be fulfilled by a system
* provider
*
* @throws IllegalArgumentException If type is empty.
*
* @hide
*/
public CreateCredentialRequest(
@NonNull String type,
@NonNull Bundle data,
boolean requireSystemProvider) {
mType = Preconditions.checkStringNotEmpty(type, "type must not be empty");
mData = requireNonNull(data, "data must not be null");
mRequireSystemProvider = requireSystemProvider;
}
private CreateCredentialRequest(@NonNull Parcel in) {
String type = in.readString8();
Bundle data = in.readBundle();
boolean requireSystemProvider = in.readBoolean();
mType = type;
AnnotationValidations.validate(NonNull.class, null, mType);
mData = data;
AnnotationValidations.validate(NonNull.class, null, mData);
mRequireSystemProvider = requireSystemProvider;
}
public static final @NonNull Parcelable.Creator<CreateCredentialRequest> CREATOR =

View File

@@ -43,6 +43,11 @@ public final class GetCredentialOption implements Parcelable {
@NonNull
private final Bundle mData;
/**
* Determines whether or not the request must only be fulfilled by a system provider.
*/
private final boolean mRequireSystemProvider;
/**
* Returns the requested credential type.
*/
@@ -59,10 +64,21 @@ public final class GetCredentialOption implements Parcelable {
return mData;
}
/**
* Returns true if the request must only be fulfilled by a system provider, and false
* otherwise.
*
* @hide
*/
public boolean requireSystemProvider() {
return mRequireSystemProvider;
}
@Override
public void writeToParcel(@NonNull Parcel dest, int flags) {
dest.writeString8(mType);
dest.writeBundle(mData);
dest.writeBoolean(mRequireSystemProvider);
}
@Override
@@ -72,30 +88,56 @@ public final class GetCredentialOption implements Parcelable {
@Override
public String toString() {
return "GetCredentialOption {" + "type=" + mType + ", data=" + mData + "}";
return "GetCredentialOption {"
+ "type=" + mType
+ ", data=" + mData
+ ", requireSystemProvider=" + mRequireSystemProvider
+ "}";
}
/**
* Constructs a {@link GetCredentialOption}.
*
* @param type the requested credential type.
* @param data the request data.
* @param type the requested credential type
* @param data the request data
*
* @throws IllegalArgumentException If type is empty.
* @throws IllegalArgumentException If type is empty
*/
public GetCredentialOption(@NonNull String type, @NonNull Bundle data) {
this(type, data, /*requireSystemProvider=*/ false);
}
/**
* Constructs a {@link GetCredentialOption}.
*
* @param type the requested credential type
* @param data the request data
* @param requireSystemProvider whether or not the request must only be fulfilled by a system
* provider
*
* @throws IllegalArgumentException If type is empty.
*
* @hide
*/
public GetCredentialOption(
@NonNull String type,
@NonNull Bundle data,
boolean requireSystemProvider) {
mType = Preconditions.checkStringNotEmpty(type, "type must not be empty");
mData = requireNonNull(data, "data must not be null");
mRequireSystemProvider = requireSystemProvider;
}
private GetCredentialOption(@NonNull Parcel in) {
String type = in.readString8();
Bundle data = in.readBundle();
boolean requireSystemProvider = in.readBoolean();
mType = type;
AnnotationValidations.validate(NonNull.class, null, mType);
mData = data;
AnnotationValidations.validate(NonNull.class, null, mData);
mRequireSystemProvider = requireSystemProvider;
}
public static final @NonNull Parcelable.Creator<GetCredentialOption> CREATOR =