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

Commit 9e5ed002 authored by Helen Qin's avatar Helen Qin
Browse files

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
parent d0724a9f
Loading
Loading
Loading
Loading
+46 −4
Original line number Diff line number Diff line
@@ -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 =
+46 −4
Original line number Diff line number Diff line
@@ -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 =