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

Commit f4e559b8 authored by Helen Qin's avatar Helen Qin Committed by Android (Google) Code Review
Browse files

Merge "Mark UI data structures as test apis."

parents be919254 54fcb35c
Loading
Loading
Loading
Loading
+88 −0
Original line number Diff line number Diff line
@@ -974,6 +974,94 @@ package android.content.rollback {

}

package android.credentials.ui {

  public final class CreateCredentialProviderData extends android.credentials.ui.ProviderData implements android.os.Parcelable {
    ctor public CreateCredentialProviderData(@NonNull String, @NonNull java.util.List<android.credentials.ui.Entry>, @Nullable android.credentials.ui.Entry);
    method @Nullable public android.credentials.ui.Entry getRemoteEntry();
    method @NonNull public java.util.List<android.credentials.ui.Entry> getSaveEntries();
    field @NonNull public static final android.os.Parcelable.Creator<android.credentials.ui.CreateCredentialProviderData> CREATOR;
  }

  public static final class CreateCredentialProviderData.Builder {
    ctor public CreateCredentialProviderData.Builder(@NonNull String);
    method @NonNull public android.credentials.ui.CreateCredentialProviderData build();
    method @NonNull public android.credentials.ui.CreateCredentialProviderData.Builder setRemoteEntry(@Nullable android.credentials.ui.Entry);
    method @NonNull public android.credentials.ui.CreateCredentialProviderData.Builder setSaveEntries(@NonNull java.util.List<android.credentials.ui.Entry>);
  }

  public final class DisabledProviderData extends android.credentials.ui.ProviderData implements android.os.Parcelable {
    ctor public DisabledProviderData(@NonNull String);
    field @NonNull public static final android.os.Parcelable.Creator<android.credentials.ui.DisabledProviderData> CREATOR;
  }

  public final class Entry implements android.os.Parcelable {
    ctor public Entry(@NonNull String, @NonNull String, @NonNull android.app.slice.Slice);
    ctor public Entry(@NonNull String, @NonNull String, @NonNull android.app.slice.Slice, @NonNull android.app.PendingIntent, @Nullable android.content.Intent);
    method public int describeContents();
    method @Nullable public android.content.Intent getFrameworkExtrasIntent();
    method @NonNull public String getKey();
    method @Nullable public android.app.PendingIntent getPendingIntent();
    method @NonNull public android.app.slice.Slice getSlice();
    method @NonNull public String getSubkey();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.credentials.ui.Entry> CREATOR;
    field @NonNull public static final String EXTRA_ENTRY_AUTHENTICATION_ACTION = "android.credentials.ui.extra.ENTRY_AUTHENTICATION_ACTION";
    field @NonNull public static final String EXTRA_ENTRY_LIST_ACTION_CHIP = "android.credentials.ui.extra.ENTRY_LIST_ACTION_CHIP";
    field @NonNull public static final String EXTRA_ENTRY_LIST_CREDENTIAL = "android.credentials.ui.extra.ENTRY_LIST_CREDENTIAL";
  }

  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);
    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> getCredentialEntries();
    method @Nullable public android.credentials.ui.Entry getRemoteEntry();
    field @NonNull public static final android.os.Parcelable.Creator<android.credentials.ui.GetCredentialProviderData> CREATOR;
  }

  public static final class GetCredentialProviderData.Builder {
    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 setCredentialEntries(@NonNull java.util.List<android.credentials.ui.Entry>);
    method @NonNull public android.credentials.ui.GetCredentialProviderData.Builder setRemoteEntry(@Nullable android.credentials.ui.Entry);
  }

  public class IntentFactory {
    method @NonNull public static android.content.Intent createCredentialSelectorIntent(@NonNull android.credentials.ui.RequestInfo, @NonNull java.util.ArrayList<android.credentials.ui.ProviderData>, @NonNull java.util.ArrayList<android.credentials.ui.DisabledProviderData>, @NonNull android.os.ResultReceiver);
  }

  public abstract class ProviderData implements android.os.Parcelable {
    ctor public ProviderData(@NonNull String);
    ctor protected ProviderData(@NonNull android.os.Parcel);
    method public int describeContents();
    method @NonNull public String getProviderFlattenedComponentName();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field public static final String EXTRA_DISABLED_PROVIDER_DATA_LIST = "android.credentials.ui.extra.DISABLED_PROVIDER_DATA_LIST";
    field public static final String EXTRA_ENABLED_PROVIDER_DATA_LIST = "android.credentials.ui.extra.ENABLED_PROVIDER_DATA_LIST";
  }

  public final class RequestInfo implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public String getAppPackageName();
    method @Nullable public android.credentials.CreateCredentialRequest getCreateCredentialRequest();
    method @Nullable public android.credentials.GetCredentialRequest getGetCredentialRequest();
    method @NonNull public android.os.IBinder getToken();
    method @NonNull public String getType();
    method @NonNull public static android.credentials.ui.RequestInfo newCreateRequestInfo(@NonNull android.os.IBinder, @NonNull android.credentials.CreateCredentialRequest, @NonNull String);
    method @NonNull public static android.credentials.ui.RequestInfo newGetRequestInfo(@NonNull android.os.IBinder, @NonNull android.credentials.GetCredentialRequest, @NonNull String);
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.credentials.ui.RequestInfo> CREATOR;
    field @NonNull public static final String EXTRA_REQUEST_INFO = "android.credentials.ui.extra.REQUEST_INFO";
    field @NonNull public static final String TYPE_CREATE = "android.credentials.ui.TYPE_CREATE";
    field @NonNull public static final String TYPE_GET = "android.credentials.ui.TYPE_GET";
    field @NonNull public static final String TYPE_UNDEFINED = "android.credentials.ui.TYPE_UNDEFINED";
  }

}

package android.database.sqlite {

  public class SQLiteCompatibilityWalFlags {
+2 −0
Original line number Diff line number Diff line
@@ -907,6 +907,8 @@ PackageLayering: android.util.FeatureFlagUtils:
    Method parameter type `android.content.Context` violates package layering: nothing in `package android.util` should depend on `package android.content`


ParcelConstructor: android.credentials.ui.ProviderData#ProviderData(android.os.Parcel):
    Parcelable inflation is exposed through CREATOR, not raw constructors, in android.credentials.ui.ProviderData
ParcelConstructor: android.os.StrictMode.ViolationInfo#ViolationInfo(android.os.Parcel):
    Parcelable inflation is exposed through CREATOR, not raw constructors, in android.os.StrictMode.ViolationInfo
ParcelConstructor: android.os.health.HealthStatsParceler#HealthStatsParceler(android.os.Parcel):
+24 −37
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.credentials.ui;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.TestApi;
import android.os.Parcel;
import android.os.Parcelable;

@@ -31,19 +32,18 @@ import java.util.List;
 *
 * @hide
 */
public class CreateCredentialProviderData extends ProviderData implements Parcelable {
@TestApi
public final class CreateCredentialProviderData extends ProviderData implements Parcelable {
    @NonNull
    private final List<Entry> mSaveEntries;
    private final boolean mIsDefaultProvider;
    @Nullable
    private final Entry mRemoteEntry;

    public CreateCredentialProviderData(
            @NonNull String providerFlattenedComponentName, @NonNull List<Entry> saveEntries,
            boolean isDefaultProvider, @Nullable Entry remoteEntry) {
            @Nullable Entry remoteEntry) {
        super(providerFlattenedComponentName);
        mSaveEntries = saveEntries;
        mIsDefaultProvider = isDefaultProvider;
        mRemoteEntry = remoteEntry;
    }

@@ -52,16 +52,12 @@ public class CreateCredentialProviderData extends ProviderData implements Parcel
        return mSaveEntries;
    }

    public boolean isDefaultProvider() {
        return mIsDefaultProvider;
    }

    @Nullable
    public Entry getRemoteEntry() {
        return mRemoteEntry;
    }

    protected CreateCredentialProviderData(@NonNull Parcel in) {
    private CreateCredentialProviderData(@NonNull Parcel in) {
        super(in);

        List<Entry> credentialEntries = new ArrayList<>();
@@ -69,8 +65,6 @@ public class CreateCredentialProviderData extends ProviderData implements Parcel
        mSaveEntries = credentialEntries;
        AnnotationValidations.validate(NonNull.class, null, mSaveEntries);

        mIsDefaultProvider = in.readBoolean();

        Entry remoteEntry = in.readTypedObject(Entry.CREATOR);
        mRemoteEntry = remoteEntry;
    }
@@ -79,7 +73,6 @@ public class CreateCredentialProviderData extends ProviderData implements Parcel
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        super.writeToParcel(dest, flags);
        dest.writeTypedList(mSaveEntries);
        dest.writeBoolean(isDefaultProvider());
        dest.writeTypedObject(mRemoteEntry, flags);
    }

@@ -88,8 +81,9 @@ public class CreateCredentialProviderData extends ProviderData implements Parcel
        return 0;
    }

    public static final @NonNull Creator<CreateCredentialProviderData> CREATOR =
            new Creator<CreateCredentialProviderData>() {
    @NonNull
    public static final Creator<CreateCredentialProviderData> CREATOR =
            new Creator<>() {
                @Override
                public CreateCredentialProviderData createFromParcel(@NonNull Parcel in) {
                    return new CreateCredentialProviderData(in);
@@ -106,11 +100,11 @@ public class CreateCredentialProviderData extends ProviderData implements Parcel
     *
     * @hide
     */
    public static class Builder {
        private @NonNull String mProviderFlattenedComponentName;
        private @NonNull List<Entry> mSaveEntries = new ArrayList<>();
        private boolean mIsDefaultProvider = false;
        private @Nullable Entry mRemoteEntry = null;
    @TestApi
    public static final class Builder {
        @NonNull private String mProviderFlattenedComponentName;
        @NonNull private List<Entry> mSaveEntries = new ArrayList<>();
        @Nullable private Entry mRemoteEntry = null;

        /** Constructor with required properties. */
        public Builder(@NonNull String providerFlattenedComponentName) {
@@ -124,13 +118,6 @@ public class CreateCredentialProviderData extends ProviderData implements Parcel
            return this;
        }

        /** Sets whether this provider is the user's selected default provider. */
        @NonNull
        public Builder setIsDefaultProvider(boolean isDefaultProvider) {
            mIsDefaultProvider = isDefaultProvider;
            return this;
        }

        /** Sets the remote entry of the provider. */
        @NonNull
        public Builder setRemoteEntry(@Nullable Entry remoteEntry) {
@@ -142,7 +129,7 @@ public class CreateCredentialProviderData extends ProviderData implements Parcel
        @NonNull
        public CreateCredentialProviderData build() {
            return new CreateCredentialProviderData(mProviderFlattenedComponentName,
                    mSaveEntries, mIsDefaultProvider, mRemoteEntry);
                    mSaveEntries, mRemoteEntry);
        }
    }
}
+4 −2
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package android.credentials.ui;

import android.annotation.NonNull;
import android.annotation.TestApi;
import android.os.Parcel;
import android.os.Parcelable;

@@ -25,14 +26,15 @@ import android.os.Parcelable;
 *
 * @hide
 */
public class DisabledProviderData extends ProviderData implements Parcelable {
@TestApi
public final class DisabledProviderData extends ProviderData implements Parcelable {

    public DisabledProviderData(
            @NonNull String providerFlattenedComponentName) {
        super(providerFlattenedComponentName);
    }

    protected DisabledProviderData(@NonNull Parcel in) {
    private DisabledProviderData(@NonNull Parcel in) {
        super(in);
    }

+9 −41
Original line number Diff line number Diff line
@@ -18,10 +18,11 @@ package android.credentials.ui;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SuppressLint;
import android.annotation.TestApi;
import android.app.PendingIntent;
import android.app.slice.Slice;
import android.content.Intent;
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;

@@ -32,58 +33,24 @@ import com.android.internal.util.AnnotationValidations;
 *
 * @hide
 */
public class Entry implements Parcelable {
    // TODO: these constants should go to jetpack.
    public static final String VERSION = "v1";
    public static final Uri CREDENTIAL_MANAGER_ENTRY_URI = Uri.parse("credentialmanager.slice");
    // TODO: remove these hint constants and use the credential entry & action ones defined below.
    public static final String HINT_TITLE = "HINT_TITLE";
    public static final String HINT_SUBTITLE = "HINT_SUBTITLE";
    public static final String HINT_ICON = "HINT_ICON";
    /**
     * 1. CREDENTIAL ENTRY CONSTANTS
     */
    // User profile picture associated with this credential entry.
    public static final String HINT_PROFILE_ICON = "HINT_PROFILE_ICON";
    public static final String HINT_CREDENTIAL_TYPE_ICON = "HINT_CREDENTIAL_TYPE_ICON";
     // The user account name of this provider app associated with this entry.
     // Note: this is independent from the request app.
    public static final String HINT_USER_PROVIDER_ACCOUNT_NAME = "HINT_USER_PROVIDER_ACCOUNT_NAME";
    public static final String HINT_PASSWORD_COUNT = "HINT_PASSWORD_COUNT";
    public static final String HINT_PASSKEY_COUNT = "HINT_PASSKEY_COUNT";
    public static final String HINT_TOTAL_CREDENTIAL_COUNT = "HINT_TOTAL_CREDENTIAL_COUNT";
    public static final String HINT_LAST_USED_TIME_MILLIS = "HINT_LAST_USED_TIME_MILLIS";
    /** Below are only available for get flows. */
    public static final String HINT_NOTE = "HINT_NOTE";
    public static final String HINT_USER_NAME = "HINT_USER_NAME";
    public static final String HINT_CREDENTIAL_TYPE_DISPLAY_NAME =
            "HINT_CREDENTIAL_TYPE_DISPLAY_NAME";
    public static final String HINT_PASSKEY_USER_DISPLAY_NAME = "HINT_PASSKEY_USER_DISPLAY_NAME";
    public static final String HINT_PASSWORD_VALUE = "HINT_PASSWORD_VALUE";

    /**
     * 2. ACTION CONSTANTS
     */
    public static final String HINT_ACTION_TITLE = "HINT_ACTION_TITLE";
    public static final String HINT_ACTION_SUBTEXT = "HINT_ACTION_SUBTEXT";
    public static final String HINT_ACTION_ICON = "HINT_ACTION_ICON";

@TestApi
public final class Entry implements Parcelable {
    /**
    * The intent extra key for the action chip {@code Entry} list when launching the UX activities.
    */
    public static final String EXTRA_ENTRY_LIST_ACTION_CHIP =
    @NonNull public static final String EXTRA_ENTRY_LIST_ACTION_CHIP =
            "android.credentials.ui.extra.ENTRY_LIST_ACTION_CHIP";
    /**
    * The intent extra key for the credential / save {@code Entry} list when launching the UX
    * activities.
    */
    public static final String EXTRA_ENTRY_LIST_CREDENTIAL =
    @NonNull public static final String EXTRA_ENTRY_LIST_CREDENTIAL =
            "android.credentials.ui.extra.ENTRY_LIST_CREDENTIAL";
    /**
    * The intent extra key for the authentication action {@code Entry} when launching the UX
    * activities.
    */
    public static final String EXTRA_ENTRY_AUTHENTICATION_ACTION =
    @NonNull public static final String EXTRA_ENTRY_AUTHENTICATION_ACTION =
            "android.credentials.ui.extra.ENTRY_AUTHENTICATION_ACTION";

    @NonNull private final String mKey;
@@ -94,7 +61,7 @@ public class Entry implements Parcelable {
    @NonNull
    private final Slice mSlice;

    protected Entry(@NonNull Parcel in) {
    private Entry(@NonNull Parcel in) {
        String key = in.readString8();
        String subkey = in.readString8();
        Slice slice = in.readTypedObject(Slice.CREATOR);
@@ -159,6 +126,7 @@ public class Entry implements Parcelable {
    }

    @Nullable
    @SuppressLint("IntentBuilderName") // Not building a new intent.
    public Intent getFrameworkExtrasIntent() {
        return mFrameworkExtrasIntent;
    }
Loading