Loading core/api/test-current.txt +88 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading core/api/test-lint-baseline.txt +2 −0 Original line number Diff line number Diff line Loading @@ -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): Loading core/java/android/credentials/ui/CreateCredentialProviderData.java +24 −37 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; } Loading @@ -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<>(); Loading @@ -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; } Loading @@ -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); } Loading @@ -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); Loading @@ -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) { Loading @@ -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) { Loading @@ -142,7 +129,7 @@ public class CreateCredentialProviderData extends ProviderData implements Parcel @NonNull public CreateCredentialProviderData build() { return new CreateCredentialProviderData(mProviderFlattenedComponentName, mSaveEntries, mIsDefaultProvider, mRemoteEntry); mSaveEntries, mRemoteEntry); } } } core/java/android/credentials/ui/DisabledProviderData.java +4 −2 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.credentials.ui; import android.annotation.NonNull; import android.annotation.TestApi; import android.os.Parcel; import android.os.Parcelable; Loading @@ -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); } Loading core/java/android/credentials/ui/Entry.java +9 −41 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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); Loading Loading @@ -159,6 +126,7 @@ public class Entry implements Parcelable { } @Nullable @SuppressLint("IntentBuilderName") // Not building a new intent. public Intent getFrameworkExtrasIntent() { return mFrameworkExtrasIntent; } Loading Loading
core/api/test-current.txt +88 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading
core/api/test-lint-baseline.txt +2 −0 Original line number Diff line number Diff line Loading @@ -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): Loading
core/java/android/credentials/ui/CreateCredentialProviderData.java +24 −37 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; } Loading @@ -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<>(); Loading @@ -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; } Loading @@ -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); } Loading @@ -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); Loading @@ -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) { Loading @@ -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) { Loading @@ -142,7 +129,7 @@ public class CreateCredentialProviderData extends ProviderData implements Parcel @NonNull public CreateCredentialProviderData build() { return new CreateCredentialProviderData(mProviderFlattenedComponentName, mSaveEntries, mIsDefaultProvider, mRemoteEntry); mSaveEntries, mRemoteEntry); } } }
core/java/android/credentials/ui/DisabledProviderData.java +4 −2 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.credentials.ui; import android.annotation.NonNull; import android.annotation.TestApi; import android.os.Parcel; import android.os.Parcelable; Loading @@ -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); } Loading
core/java/android/credentials/ui/Entry.java +9 −41 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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); Loading Loading @@ -159,6 +126,7 @@ public class Entry implements Parcelable { } @Nullable @SuppressLint("IntentBuilderName") // Not building a new intent. public Intent getFrameworkExtrasIntent() { return mFrameworkExtrasIntent; } Loading