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

Commit 3337aedd authored by Reema Bajwa's avatar Reema Bajwa
Browse files

Allow list of auth entries in credMan Provider API

In the cuurent API design, providers can either create a response with
an authEntry (if app locked) or w. a CredentialResponseContent
(containing actual entries). Based on feedback, we need to allow for
multiple auth entries & credential entries at the same time a given
provider can have multiple accounts which can be locked/unlcoked
separately.

Test: Built & deployed locally

Bug: 266637921
API-Coverage-Bug: 247549381

Change-Id: I84c64eb588507c583bbd53158641445f2ccb41d7
parent ee512d28
Loading
Loading
Loading
Loading
+17 −24
Original line number Diff line number Diff line
@@ -40240,15 +40240,27 @@ package android.service.credentials {
  }
  public final class BeginGetCredentialResponse implements android.os.Parcelable {
    method @NonNull public static android.service.credentials.BeginGetCredentialResponse createWithAuthentication(@NonNull android.service.credentials.Action);
    method @NonNull public static android.service.credentials.BeginGetCredentialResponse createWithResponseContent(@NonNull android.service.credentials.CredentialsResponseContent);
    method public int describeContents();
    method @Nullable public android.service.credentials.Action getAuthenticationAction();
    method @Nullable public android.service.credentials.CredentialsResponseContent getCredentialsResponseContent();
    method @NonNull public java.util.List<android.service.credentials.Action> getActions();
    method @NonNull public java.util.List<android.service.credentials.Action> getAuthenticationActions();
    method @NonNull public java.util.List<android.service.credentials.CredentialEntry> getCredentialEntries();
    method @Nullable public android.service.credentials.CredentialEntry getRemoteCredentialEntry();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.service.credentials.BeginGetCredentialResponse> CREATOR;
  }
  public static final class BeginGetCredentialResponse.Builder {
    ctor public BeginGetCredentialResponse.Builder();
    method @NonNull public android.service.credentials.BeginGetCredentialResponse.Builder addAction(@NonNull android.service.credentials.Action);
    method @NonNull public android.service.credentials.BeginGetCredentialResponse.Builder addAuthenticationAction(@NonNull android.service.credentials.Action);
    method @NonNull public android.service.credentials.BeginGetCredentialResponse.Builder addCredentialEntry(@NonNull android.service.credentials.CredentialEntry);
    method @NonNull public android.service.credentials.BeginGetCredentialResponse build();
    method @NonNull public android.service.credentials.BeginGetCredentialResponse.Builder setActions(@NonNull java.util.List<android.service.credentials.Action>);
    method @NonNull public android.service.credentials.BeginGetCredentialResponse.Builder setAuthenticationActions(@NonNull java.util.List<android.service.credentials.Action>);
    method @NonNull public android.service.credentials.BeginGetCredentialResponse.Builder setCredentialEntries(@NonNull java.util.List<android.service.credentials.CredentialEntry>);
    method @NonNull public android.service.credentials.BeginGetCredentialResponse.Builder setRemoteCredentialEntry(@Nullable android.service.credentials.CredentialEntry);
  }
  public final class CallingAppInfo implements android.os.Parcelable {
    ctor public CallingAppInfo(@NonNull String, @NonNull android.content.pm.SigningInfo);
    method public int describeContents();
@@ -40302,35 +40314,16 @@ package android.service.credentials {
    method public abstract void onClearCredentialState(@NonNull android.service.credentials.ClearCredentialStateRequest, @NonNull android.os.CancellationSignal, @NonNull android.os.OutcomeReceiver<java.lang.Void,android.credentials.ClearCredentialStateException>);
    field public static final String CAPABILITY_META_DATA_KEY = "android.credentials.capabilities";
    field public static final String EXTRA_BEGIN_GET_CREDENTIAL_REQUEST = "android.service.credentials.extra.BEGIN_GET_CREDENTIAL_REQUEST";
    field public static final String EXTRA_BEGIN_GET_CREDENTIAL_RESPONSE = "android.service.credentials.extra.BEGIN_GET_CREDENTIAL_RESPONSE";
    field public static final String EXTRA_CREATE_CREDENTIAL_EXCEPTION = "android.service.credentials.extra.CREATE_CREDENTIAL_EXCEPTION";
    field public static final String EXTRA_CREATE_CREDENTIAL_REQUEST = "android.service.credentials.extra.CREATE_CREDENTIAL_REQUEST";
    field public static final String EXTRA_CREATE_CREDENTIAL_RESPONSE = "android.service.credentials.extra.CREATE_CREDENTIAL_RESPONSE";
    field public static final String EXTRA_CREDENTIALS_RESPONSE_CONTENT = "android.service.credentials.extra.CREDENTIALS_RESPONSE_CONTENT";
    field public static final String EXTRA_GET_CREDENTIAL_EXCEPTION = "android.service.credentials.extra.GET_CREDENTIAL_EXCEPTION";
    field public static final String EXTRA_GET_CREDENTIAL_REQUEST = "android.service.credentials.extra.GET_CREDENTIAL_REQUEST";
    field public static final String EXTRA_GET_CREDENTIAL_RESPONSE = "android.service.credentials.extra.GET_CREDENTIAL_RESPONSE";
    field public static final String SERVICE_INTERFACE = "android.service.credentials.CredentialProviderService";
  }
  public final class CredentialsResponseContent implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public java.util.List<android.service.credentials.Action> getActions();
    method @NonNull public java.util.List<android.service.credentials.CredentialEntry> getCredentialEntries();
    method @Nullable public android.service.credentials.CredentialEntry getRemoteCredentialEntry();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.service.credentials.CredentialsResponseContent> CREATOR;
  }
  public static final class CredentialsResponseContent.Builder {
    ctor public CredentialsResponseContent.Builder();
    method @NonNull public android.service.credentials.CredentialsResponseContent.Builder addAction(@NonNull android.service.credentials.Action);
    method @NonNull public android.service.credentials.CredentialsResponseContent.Builder addCredentialEntry(@NonNull android.service.credentials.CredentialEntry);
    method @NonNull public android.service.credentials.CredentialsResponseContent build();
    method @NonNull public android.service.credentials.CredentialsResponseContent.Builder setActions(@NonNull java.util.List<android.service.credentials.Action>);
    method @NonNull public android.service.credentials.CredentialsResponseContent.Builder setCredentialEntries(@NonNull java.util.List<android.service.credentials.CredentialEntry>);
    method @NonNull public android.service.credentials.CredentialsResponseContent.Builder setRemoteCredentialEntry(@Nullable android.service.credentials.CredentialEntry);
  }
  public final class GetCredentialRequest implements android.os.Parcelable {
    ctor public GetCredentialRequest(@NonNull android.service.credentials.CallingAppInfo, @NonNull android.credentials.CredentialOption);
    method public int describeContents();
+3 −3
Original line number Diff line number Diff line
@@ -1031,9 +1031,9 @@ package android.credentials.ui {
  }

  public final class GetCredentialProviderData extends android.credentials.ui.ProviderData implements android.os.Parcelable {
    ctor public GetCredentialProviderData(@NonNull String, @NonNull java.util.List<android.credentials.ui.Entry>, @NonNull java.util.List<android.credentials.ui.Entry>, @Nullable android.credentials.ui.Entry, @Nullable android.credentials.ui.Entry);
    ctor public GetCredentialProviderData(@NonNull String, @NonNull java.util.List<android.credentials.ui.Entry>, @NonNull java.util.List<android.credentials.ui.Entry>, @NonNull java.util.List<android.credentials.ui.Entry>, @Nullable android.credentials.ui.Entry);
    method @NonNull public java.util.List<android.credentials.ui.Entry> getActionChips();
    method @Nullable public android.credentials.ui.Entry getAuthenticationEntry();
    method @NonNull public java.util.List<android.credentials.ui.Entry> getAuthenticationEntries();
    method @NonNull public java.util.List<android.credentials.ui.Entry> getCredentialEntries();
    method @Nullable public android.credentials.ui.Entry getRemoteEntry();
    field @NonNull public static final android.os.Parcelable.Creator<android.credentials.ui.GetCredentialProviderData> CREATOR;
@@ -1043,7 +1043,7 @@ package android.credentials.ui {
    ctor public GetCredentialProviderData.Builder(@NonNull String);
    method @NonNull public android.credentials.ui.GetCredentialProviderData build();
    method @NonNull public android.credentials.ui.GetCredentialProviderData.Builder setActionChips(@NonNull java.util.List<android.credentials.ui.Entry>);
    method @NonNull public android.credentials.ui.GetCredentialProviderData.Builder setAuthenticationEntry(@Nullable android.credentials.ui.Entry);
    method @NonNull public android.credentials.ui.GetCredentialProviderData.Builder setAuthenticationEntries(@NonNull java.util.List<android.credentials.ui.Entry>);
    method @NonNull public android.credentials.ui.GetCredentialProviderData.Builder setCredentialEntries(@NonNull java.util.List<android.credentials.ui.Entry>);
    method @NonNull public android.credentials.ui.GetCredentialProviderData.Builder setRemoteEntry(@Nullable android.credentials.ui.Entry);
  }
+15 −13
Original line number Diff line number Diff line
@@ -39,18 +39,18 @@ public final class GetCredentialProviderData extends ProviderData implements Par
    @NonNull
    private final List<Entry> mActionChips;
    @Nullable
    private final Entry mAuthenticationEntry;
    private final List<Entry> mAuthenticationEntries;
    @Nullable
    private final Entry mRemoteEntry;

    public GetCredentialProviderData(
            @NonNull String providerFlattenedComponentName, @NonNull List<Entry> credentialEntries,
            @NonNull List<Entry> actionChips, @Nullable Entry authenticationEntry,
            @NonNull List<Entry> actionChips, @NonNull List<Entry> authenticationEntries,
            @Nullable Entry remoteEntry) {
        super(providerFlattenedComponentName);
        mCredentialEntries = credentialEntries;
        mActionChips = actionChips;
        mAuthenticationEntry = authenticationEntry;
        mAuthenticationEntries = authenticationEntries;
        mRemoteEntry = remoteEntry;
    }

@@ -64,9 +64,9 @@ public final class GetCredentialProviderData extends ProviderData implements Par
        return mActionChips;
    }

    @Nullable
    public Entry getAuthenticationEntry() {
        return mAuthenticationEntry;
    @NonNull
    public List<Entry> getAuthenticationEntries() {
        return mAuthenticationEntries;
    }

    @Nullable
@@ -87,8 +87,10 @@ public final class GetCredentialProviderData extends ProviderData implements Par
        mActionChips = actionChips;
        AnnotationValidations.validate(NonNull.class, null, mActionChips);

        Entry authenticationEntry = in.readTypedObject(Entry.CREATOR);
        mAuthenticationEntry = authenticationEntry;
        List<Entry> authenticationEntries  = new ArrayList<>();
        in.readTypedList(authenticationEntries, Entry.CREATOR);
        mAuthenticationEntries = actionChips;
        AnnotationValidations.validate(NonNull.class, null, mAuthenticationEntries);

        Entry remoteEntry = in.readTypedObject(Entry.CREATOR);
        mRemoteEntry = remoteEntry;
@@ -99,7 +101,7 @@ public final class GetCredentialProviderData extends ProviderData implements Par
        super.writeToParcel(dest, flags);
        dest.writeTypedList(mCredentialEntries);
        dest.writeTypedList(mActionChips);
        dest.writeTypedObject(mAuthenticationEntry, flags);
        dest.writeTypedList(mAuthenticationEntries);
        dest.writeTypedObject(mRemoteEntry, flags);
    }

@@ -131,7 +133,7 @@ public final class GetCredentialProviderData extends ProviderData implements Par
        @NonNull private String mProviderFlattenedComponentName;
        @NonNull private List<Entry> mCredentialEntries = new ArrayList<>();
        @NonNull private List<Entry> mActionChips = new ArrayList<>();
        @Nullable private Entry mAuthenticationEntry = null;
        @Nullable private List<Entry> mAuthenticationEntries = new ArrayList<>();
        @Nullable private Entry mRemoteEntry = null;

        /** Constructor with required properties. */
@@ -155,8 +157,8 @@ public final class GetCredentialProviderData extends ProviderData implements Par

        /** Sets the authentication entry to be displayed to the user. */
        @NonNull
        public Builder setAuthenticationEntry(@Nullable Entry authenticationEntry) {
            mAuthenticationEntry = authenticationEntry;
        public Builder setAuthenticationEntries(@NonNull List<Entry> authenticationEntry) {
            mAuthenticationEntries = authenticationEntry;
            return this;
        }

@@ -171,7 +173,7 @@ public final class GetCredentialProviderData extends ProviderData implements Par
        @NonNull
        public GetCredentialProviderData build() {
            return new GetCredentialProviderData(mProviderFlattenedComponentName,
                    mCredentialEntries, mActionChips, mAuthenticationEntry, mRemoteEntry);
                    mCredentialEntries, mActionChips, mAuthenticationEntries, mRemoteEntry);
        }
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -51,7 +51,7 @@ public final class BeginGetCredentialRequest implements Parcelable {
     *
     * This request does not reveal sensitive parameters. Complete list of parameters
     * is retrieved through the {@link PendingIntent} set on each {@link CredentialEntry}
     * on {@link CredentialsResponseContent} set on {@link BeginGetCredentialResponse},
     * on {@link BeginGetCredentialResponse} set on {@link BeginGetCredentialResponse},
     * when the user selects one of these entries.
     */
    @NonNull private final List<BeginGetCredentialOption> mBeginGetCredentialOptions;
+192 −62

File changed.

Preview size limit exceeded, changes collapsed.

Loading