diff options
52 files changed, 438 insertions, 239 deletions
diff --git a/core/api/system-current.txt b/core/api/system-current.txt index 5f79792d3ff6..30913a0db9b1 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -4381,6 +4381,41 @@ package android.content.rollback { } +package android.credentials.selection { + + @FlaggedApi("android.credentials.flags.configurable_selector_ui_enabled") public final class FailureResult { + ctor public FailureResult(int, @Nullable String); + method public int getErrorCode(); + method @Nullable public String getErrorMessage(); + field public static final int ERROR_CODE_CANCELED_AND_LAUNCHED_SETTINGS = 2; // 0x2 + field public static final int ERROR_CODE_DIALOG_CANCELED_BY_USER = 1; // 0x1 + field public static final int ERROR_CODE_UI_FAILURE = 0; // 0x0 + } + + @FlaggedApi("android.credentials.flags.configurable_selector_ui_enabled") public final class ProviderPendingIntentResponse implements android.os.Parcelable { + ctor public ProviderPendingIntentResponse(int, @Nullable android.content.Intent); + method public int describeContents(); + method public int getResultCode(); + method @Nullable public android.content.Intent getResultData(); + method public void writeToParcel(@NonNull android.os.Parcel, int); + field @NonNull public static final android.os.Parcelable.Creator<android.credentials.selection.ProviderPendingIntentResponse> CREATOR; + } + + @FlaggedApi("android.credentials.flags.configurable_selector_ui_enabled") public final class ResultHelper { + method public static void sendFailureResult(@NonNull android.os.ResultReceiver, @NonNull android.credentials.selection.FailureResult); + method public static void sendUserSelectionResult(@NonNull android.os.ResultReceiver, @NonNull android.credentials.selection.UserSelectionResult); + } + + @FlaggedApi("android.credentials.flags.configurable_selector_ui_enabled") public final class UserSelectionResult { + ctor public UserSelectionResult(@NonNull String, @NonNull String, @NonNull String, @Nullable android.credentials.selection.ProviderPendingIntentResponse); + method @NonNull public String getEntryKey(); + method @NonNull public String getEntrySubkey(); + method @Nullable public android.credentials.selection.ProviderPendingIntentResponse getPendingIntentProviderResponse(); + method @NonNull public String getProviderId(); + } + +} + package android.database { public abstract class ContentObserver { diff --git a/core/api/test-current.txt b/core/api/test-current.txt index 7a3d320dddab..42cf08ff9a66 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -1262,9 +1262,9 @@ package android.credentials { } -package android.credentials.ui { +package android.credentials.selection { - public final class AuthenticationEntry implements android.os.Parcelable { + @FlaggedApi("android.credentials.flags.configurable_selector_ui_enabled") public final class AuthenticationEntry implements android.os.Parcelable { ctor public AuthenticationEntry(@NonNull String, @NonNull String, @NonNull android.app.slice.Slice, int); ctor public AuthenticationEntry(@NonNull String, @NonNull String, @NonNull android.app.slice.Slice, int, @NonNull android.content.Intent); method public int describeContents(); @@ -1274,32 +1274,47 @@ package android.credentials.ui { method @NonNull public int getStatus(); 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.AuthenticationEntry> CREATOR; + field @NonNull public static final android.os.Parcelable.Creator<android.credentials.selection.AuthenticationEntry> CREATOR; field public static final int STATUS_LOCKED = 0; // 0x0 field public static final int STATUS_UNLOCKED_BUT_EMPTY_LESS_RECENT = 1; // 0x1 field public static final int STATUS_UNLOCKED_BUT_EMPTY_MOST_RECENT = 2; // 0x2 } - 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; + @FlaggedApi("android.credentials.flags.configurable_selector_ui_enabled") public class BaseDialogResult implements android.os.Parcelable { + ctor public BaseDialogResult(@Nullable android.os.IBinder); + ctor protected BaseDialogResult(@NonNull android.os.Parcel); + method public static void addToBundle(@NonNull android.credentials.selection.BaseDialogResult, @NonNull android.os.Bundle); + method public int describeContents(); + method @Nullable public static android.credentials.selection.BaseDialogResult fromResultData(@NonNull android.os.Bundle); + method @Deprecated @Nullable public android.os.IBinder getRequestToken(); + method public void writeToParcel(@NonNull android.os.Parcel, int); + field @NonNull public static final android.os.Parcelable.Creator<android.credentials.selection.BaseDialogResult> CREATOR; + field public static final int RESULT_CODE_CANCELED_AND_LAUNCHED_SETTINGS = 1; // 0x1 + field public static final int RESULT_CODE_DATA_PARSING_FAILURE = 3; // 0x3 + field public static final int RESULT_CODE_DIALOG_COMPLETE_WITH_SELECTION = 2; // 0x2 + field public static final int RESULT_CODE_DIALOG_USER_CANCELED = 0; // 0x0 + } + + @FlaggedApi("android.credentials.flags.configurable_selector_ui_enabled") public final class CreateCredentialProviderData extends android.credentials.selection.ProviderData implements android.os.Parcelable { + ctor public CreateCredentialProviderData(@NonNull String, @NonNull java.util.List<android.credentials.selection.Entry>, @Nullable android.credentials.selection.Entry); + method @Nullable public android.credentials.selection.Entry getRemoteEntry(); + method @NonNull public java.util.List<android.credentials.selection.Entry> getSaveEntries(); + field @NonNull public static final android.os.Parcelable.Creator<android.credentials.selection.CreateCredentialProviderData> CREATOR; } - public static final class CreateCredentialProviderData.Builder { + @FlaggedApi("android.credentials.flags.configurable_selector_ui_enabled") 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>); + method @NonNull public android.credentials.selection.CreateCredentialProviderData build(); + method @NonNull public android.credentials.selection.CreateCredentialProviderData.Builder setRemoteEntry(@Nullable android.credentials.selection.Entry); + method @NonNull public android.credentials.selection.CreateCredentialProviderData.Builder setSaveEntries(@NonNull java.util.List<android.credentials.selection.Entry>); } - public final class DisabledProviderData extends android.credentials.ui.ProviderData implements android.os.Parcelable { + @FlaggedApi("android.credentials.flags.configurable_selector_ui_enabled") public final class DisabledProviderData extends android.credentials.selection.ProviderData implements android.os.Parcelable { ctor public DisabledProviderData(@NonNull String); - field @NonNull public static final android.os.Parcelable.Creator<android.credentials.ui.DisabledProviderData> CREATOR; + field @NonNull public static final android.os.Parcelable.Creator<android.credentials.selection.DisabledProviderData> CREATOR; } - public final class Entry implements android.os.Parcelable { + @FlaggedApi("android.credentials.flags.configurable_selector_ui_enabled") 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.content.Intent); method public int describeContents(); @@ -1309,56 +1324,81 @@ package android.credentials.ui { 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 android.os.Parcelable.Creator<android.credentials.selection.Entry> CREATOR; + } + + @FlaggedApi("android.credentials.flags.configurable_selector_ui_enabled") public final class FailureDialogResult extends android.credentials.selection.BaseDialogResult implements android.os.Parcelable { + ctor public FailureDialogResult(@Nullable android.os.IBinder, @Nullable String); + method public static void addToBundle(@NonNull android.credentials.selection.FailureDialogResult, @NonNull android.os.Bundle); + method @Nullable public static android.credentials.selection.FailureDialogResult fromResultData(@NonNull android.os.Bundle); + method @Nullable public String getErrorMessage(); + field @NonNull public static final android.os.Parcelable.Creator<android.credentials.selection.FailureDialogResult> CREATOR; } - 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>, @NonNull java.util.List<android.credentials.ui.AuthenticationEntry>, @Nullable android.credentials.ui.Entry); - method @NonNull public java.util.List<android.credentials.ui.Entry> getActionChips(); - method @NonNull public java.util.List<android.credentials.ui.AuthenticationEntry> 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; + @FlaggedApi("android.credentials.flags.configurable_selector_ui_enabled") public final class GetCredentialProviderData extends android.credentials.selection.ProviderData implements android.os.Parcelable { + ctor public GetCredentialProviderData(@NonNull String, @NonNull java.util.List<android.credentials.selection.Entry>, @NonNull java.util.List<android.credentials.selection.Entry>, @NonNull java.util.List<android.credentials.selection.AuthenticationEntry>, @Nullable android.credentials.selection.Entry); + method @NonNull public java.util.List<android.credentials.selection.Entry> getActionChips(); + method @NonNull public java.util.List<android.credentials.selection.AuthenticationEntry> getAuthenticationEntries(); + method @NonNull public java.util.List<android.credentials.selection.Entry> getCredentialEntries(); + method @Nullable public android.credentials.selection.Entry getRemoteEntry(); + field @NonNull public static final android.os.Parcelable.Creator<android.credentials.selection.GetCredentialProviderData> CREATOR; } - public static final class GetCredentialProviderData.Builder { + @FlaggedApi("android.credentials.flags.configurable_selector_ui_enabled") 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 setAuthenticationEntries(@NonNull java.util.List<android.credentials.ui.AuthenticationEntry>); - 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); + method @NonNull public android.credentials.selection.GetCredentialProviderData build(); + method @NonNull public android.credentials.selection.GetCredentialProviderData.Builder setActionChips(@NonNull java.util.List<android.credentials.selection.Entry>); + method @NonNull public android.credentials.selection.GetCredentialProviderData.Builder setAuthenticationEntries(@NonNull java.util.List<android.credentials.selection.AuthenticationEntry>); + method @NonNull public android.credentials.selection.GetCredentialProviderData.Builder setCredentialEntries(@NonNull java.util.List<android.credentials.selection.Entry>); + method @NonNull public android.credentials.selection.GetCredentialProviderData.Builder setRemoteEntry(@Nullable android.credentials.selection.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); + @FlaggedApi("android.credentials.flags.configurable_selector_ui_enabled") public class IntentFactory { + method @NonNull public static android.content.Intent createCredentialSelectorIntent(@NonNull android.credentials.selection.RequestInfo, @NonNull java.util.ArrayList<android.credentials.selection.ProviderData>, @NonNull java.util.ArrayList<android.credentials.selection.DisabledProviderData>, @NonNull android.os.ResultReceiver); } - public abstract class ProviderData implements android.os.Parcelable { + @FlaggedApi("android.credentials.flags.configurable_selector_ui_enabled") 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"; + field public static final String EXTRA_DISABLED_PROVIDER_DATA_LIST = "android.credentials.selection.extra.DISABLED_PROVIDER_DATA_LIST"; + field public static final String EXTRA_ENABLED_PROVIDER_DATA_LIST = "android.credentials.selection.extra.ENABLED_PROVIDER_DATA_LIST"; } - public final class RequestInfo implements android.os.Parcelable { + @FlaggedApi("android.credentials.flags.configurable_selector_ui_enabled") 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 @NonNull public java.util.List<java.lang.String> getDefaultProviderIds(); method @Nullable public android.credentials.GetCredentialRequest getGetCredentialRequest(); + method @NonNull public java.util.List<java.lang.String> getRegistryProviderIds(); 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 boolean hasPermissionToOverrideDefault(); + method @NonNull public static android.credentials.selection.RequestInfo newCreateRequestInfo(@NonNull android.os.IBinder, @NonNull android.credentials.CreateCredentialRequest, @NonNull String); + method @NonNull public static android.credentials.selection.RequestInfo newCreateRequestInfo(@NonNull android.os.IBinder, @NonNull android.credentials.CreateCredentialRequest, @NonNull String, boolean, @NonNull java.util.List<java.lang.String>); + method @NonNull public static android.credentials.selection.RequestInfo newGetRequestInfo(@NonNull android.os.IBinder, @NonNull android.credentials.GetCredentialRequest, @NonNull String, boolean); + method @NonNull public static android.credentials.selection.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"; + field @NonNull public static final android.os.Parcelable.Creator<android.credentials.selection.RequestInfo> CREATOR; + field @NonNull public static final String EXTRA_REQUEST_INFO = "android.credentials.selection.extra.REQUEST_INFO"; + field @NonNull public static final String TYPE_CREATE = "android.credentials.selection.TYPE_CREATE"; + field @NonNull public static final String TYPE_GET = "android.credentials.selection.TYPE_GET"; + field @NonNull public static final String TYPE_UNDEFINED = "android.credentials.selection.TYPE_UNDEFINED"; + } + + @FlaggedApi("android.credentials.flags.configurable_selector_ui_enabled") public final class UserSelectionDialogResult extends android.credentials.selection.BaseDialogResult implements android.os.Parcelable { + ctor public UserSelectionDialogResult(@Nullable android.os.IBinder, @NonNull String, @NonNull String, @NonNull String); + ctor public UserSelectionDialogResult(@Nullable android.os.IBinder, @NonNull String, @NonNull String, @NonNull String, @Nullable android.credentials.selection.ProviderPendingIntentResponse); + method public static void addToBundle(@NonNull android.credentials.selection.UserSelectionDialogResult, @NonNull android.os.Bundle); + method @Nullable public static android.credentials.selection.UserSelectionDialogResult fromResultData(@NonNull android.os.Bundle); + method @NonNull public String getEntryKey(); + method @NonNull public String getEntrySubkey(); + method @Nullable public android.credentials.selection.ProviderPendingIntentResponse getPendingIntentProviderResponse(); + method @NonNull public String getProviderId(); + field @NonNull public static final android.os.Parcelable.Creator<android.credentials.selection.UserSelectionDialogResult> CREATOR; } } diff --git a/core/java/android/credentials/GetCandidateCredentialsResponse.java b/core/java/android/credentials/GetCandidateCredentialsResponse.java index 530feadae836..73361ad25964 100644 --- a/core/java/android/credentials/GetCandidateCredentialsResponse.java +++ b/core/java/android/credentials/GetCandidateCredentialsResponse.java @@ -19,7 +19,7 @@ package android.credentials; import android.annotation.Hide; import android.annotation.NonNull; import android.app.PendingIntent; -import android.credentials.ui.GetCredentialProviderData; +import android.credentials.selection.GetCredentialProviderData; import android.os.Parcel; import android.os.Parcelable; diff --git a/core/java/android/credentials/ui/AuthenticationEntry.java b/core/java/android/credentials/selection/AuthenticationEntry.java index 9bd0871b3d3b..54589e1aed8b 100644 --- a/core/java/android/credentials/ui/AuthenticationEntry.java +++ b/core/java/android/credentials/selection/AuthenticationEntry.java @@ -14,8 +14,11 @@ * limitations under the License. */ -package android.credentials.ui; +package android.credentials.selection; +import static android.credentials.flags.Flags.FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED; + +import android.annotation.FlaggedApi; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; @@ -41,6 +44,7 @@ import java.lang.annotation.RetentionPolicy; * @hide */ @TestApi +@FlaggedApi(FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED) public final class AuthenticationEntry implements Parcelable { @NonNull private final String mKey; diff --git a/core/java/android/credentials/ui/BaseDialogResult.java b/core/java/android/credentials/selection/BaseDialogResult.java index e985a4666d31..d4a73c3c1175 100644 --- a/core/java/android/credentials/ui/BaseDialogResult.java +++ b/core/java/android/credentials/selection/BaseDialogResult.java @@ -14,11 +14,16 @@ * limitations under the License. */ -package android.credentials.ui; +package android.credentials.selection; +import static android.credentials.flags.Flags.FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED; + +import android.annotation.FlaggedApi; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.SuppressLint; +import android.annotation.TestApi; import android.os.Bundle; import android.os.IBinder; import android.os.Parcel; @@ -35,6 +40,10 @@ import java.lang.annotation.RetentionPolicy; * * @hide */ +@TestApi +@FlaggedApi(FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED) +@SuppressLint("ParcelNotFinal") // Test API only. This is never intended to be officially exposed. +// Instead proper final wrapper classes are defined (e.g. {@code FailureDialogResult}). public class BaseDialogResult implements Parcelable { /** Parses and returns a BaseDialogResult from the given resultData. */ @Nullable @@ -54,7 +63,8 @@ public class BaseDialogResult implements Parcelable { * The intent extra key for the {@code BaseDialogResult} object when the credential * selector activity finishes. */ - private static final String EXTRA_BASE_RESULT = "android.credentials.ui.extra.BASE_RESULT"; + private static final String EXTRA_BASE_RESULT = + "android.credentials.selection.extra.BASE_RESULT"; /** @hide **/ @IntDef(prefix = {"RESULT_CODE_"}, value = { @@ -92,13 +102,19 @@ public class BaseDialogResult implements Parcelable { mRequestToken = requestToken; } - /** Returns the unique identifier for the request that launched the operation. */ + /** + * Returns the unique identifier for the request that launched the operation. + * + * @deprecated do not use + */ @Nullable @Deprecated public IBinder getRequestToken() { return mRequestToken; } + @SuppressLint("ParcelConstructor") // Test API only. This is never intended to be officially + // exposed. Instead proper final wrapper classes are defined (e.g. {@code FailureDialogResult}). protected BaseDialogResult(@NonNull Parcel in) { IBinder requestToken = in.readStrongBinder(); mRequestToken = requestToken; diff --git a/core/java/android/credentials/ui/CancelUiRequest.java b/core/java/android/credentials/selection/CancelUiRequest.java index 712424ced41b..fca0e2ad184e 100644 --- a/core/java/android/credentials/ui/CancelUiRequest.java +++ b/core/java/android/credentials/selection/CancelUiRequest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package android.credentials.ui; +package android.credentials.selection; import android.annotation.NonNull; import android.os.IBinder; @@ -38,7 +38,7 @@ public final class CancelUiRequest implements Parcelable { */ @NonNull public static final String EXTRA_CANCEL_UI_REQUEST = - "android.credentials.ui.extra.CANCEL_UI_REQUEST"; + "android.credentials.selection.extra.CANCEL_UI_REQUEST"; @NonNull private final IBinder mToken; diff --git a/core/java/android/credentials/ui/Constants.java b/core/java/android/credentials/selection/Constants.java index 68f28e74dad0..7e6c7810f1ab 100644 --- a/core/java/android/credentials/ui/Constants.java +++ b/core/java/android/credentials/selection/Constants.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package android.credentials.ui; +package android.credentials.selection; /** * Constants for the ui protocol that doesn't fit into other individual data structures. @@ -27,14 +27,14 @@ public class Constants { * The intent extra key for the {@code ResultReceiver} object when launching the UX activities. */ public static final String EXTRA_RESULT_RECEIVER = - "android.credentials.ui.extra.RESULT_RECEIVER"; + "android.credentials.selection.extra.RESULT_RECEIVER"; /** * The intent extra key for indicating whether the bottom sheet should be started directly * on the 'All Options' screen. */ public static final String EXTRA_REQ_FOR_ALL_OPTIONS = - "android.credentials.ui.extra.REQ_FOR_ALL_OPTIONS"; + "android.credentials.selection.extra.REQ_FOR_ALL_OPTIONS"; private Constants() {} } diff --git a/core/java/android/credentials/ui/CreateCredentialProviderData.java b/core/java/android/credentials/selection/CreateCredentialProviderData.java index d7a4f5bdbfca..fc80ea8cec8a 100644 --- a/core/java/android/credentials/ui/CreateCredentialProviderData.java +++ b/core/java/android/credentials/selection/CreateCredentialProviderData.java @@ -14,8 +14,11 @@ * limitations under the License. */ -package android.credentials.ui; +package android.credentials.selection; +import static android.credentials.flags.Flags.FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED; + +import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.TestApi; @@ -33,6 +36,7 @@ import java.util.List; * @hide */ @TestApi +@FlaggedApi(FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED) public final class CreateCredentialProviderData extends ProviderData implements Parcelable { @NonNull private final List<Entry> mSaveEntries; @@ -112,6 +116,7 @@ public final class CreateCredentialProviderData extends ProviderData implements * @hide */ @TestApi + @FlaggedApi(FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED) public static final class Builder { @NonNull private String mProviderFlattenedComponentName; @NonNull private List<Entry> mSaveEntries = new ArrayList<>(); diff --git a/core/java/android/credentials/ui/CreateCredentialProviderInfo.java b/core/java/android/credentials/selection/CreateCredentialProviderInfo.java index 41ca852c2351..78b9fd445f49 100644 --- a/core/java/android/credentials/ui/CreateCredentialProviderInfo.java +++ b/core/java/android/credentials/selection/CreateCredentialProviderInfo.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package android.credentials.ui; +package android.credentials.selection; import android.annotation.NonNull; import android.annotation.Nullable; diff --git a/core/java/android/credentials/ui/DisabledProviderData.java b/core/java/android/credentials/selection/DisabledProviderData.java index 8bccdc9a199f..b6f6ad4d60d7 100644 --- a/core/java/android/credentials/ui/DisabledProviderData.java +++ b/core/java/android/credentials/selection/DisabledProviderData.java @@ -14,8 +14,11 @@ * limitations under the License. */ -package android.credentials.ui; +package android.credentials.selection; +import static android.credentials.flags.Flags.FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED; + +import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.annotation.TestApi; import android.os.Parcel; @@ -27,6 +30,7 @@ import android.os.Parcelable; * @hide */ @TestApi +@FlaggedApi(FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED) public final class DisabledProviderData extends ProviderData implements Parcelable { public DisabledProviderData( diff --git a/core/java/android/credentials/ui/DisabledProviderInfo.java b/core/java/android/credentials/selection/DisabledProviderInfo.java index 7ce63681cf1c..7d7dbc2dd689 100644 --- a/core/java/android/credentials/ui/DisabledProviderInfo.java +++ b/core/java/android/credentials/selection/DisabledProviderInfo.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package android.credentials.ui; +package android.credentials.selection; import android.annotation.NonNull; diff --git a/core/java/android/credentials/ui/Entry.java b/core/java/android/credentials/selection/Entry.java index 84694471ce70..bcf4ee3fb819 100644 --- a/core/java/android/credentials/ui/Entry.java +++ b/core/java/android/credentials/selection/Entry.java @@ -14,8 +14,11 @@ * limitations under the License. */ -package android.credentials.ui; +package android.credentials.selection; +import static android.credentials.flags.Flags.FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED; + +import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SuppressLint; @@ -34,6 +37,7 @@ import com.android.internal.util.AnnotationValidations; * @hide */ @TestApi +@FlaggedApi(FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED) public final class Entry implements Parcelable { @NonNull private final String mKey; diff --git a/core/java/android/credentials/ui/FailureDialogResult.java b/core/java/android/credentials/selection/FailureDialogResult.java index abd5a92415d8..218aa469887e 100644 --- a/core/java/android/credentials/ui/FailureDialogResult.java +++ b/core/java/android/credentials/selection/FailureDialogResult.java @@ -14,10 +14,14 @@ * limitations under the License. */ -package android.credentials.ui; +package android.credentials.selection; +import static android.credentials.flags.Flags.FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED; + +import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.TestApi; import android.os.Bundle; import android.os.IBinder; import android.os.Parcel; @@ -28,6 +32,8 @@ import android.os.Parcelable; * * @hide */ +@TestApi +@FlaggedApi(FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED) public final class FailureDialogResult extends BaseDialogResult implements Parcelable { /** Parses and returns a UserSelectionDialogResult from the given resultData. */ @Nullable @@ -50,7 +56,7 @@ public final class FailureDialogResult extends BaseDialogResult implements Parce * selector activity finishes. */ private static final String EXTRA_FAILURE_RESULT = - "android.credentials.ui.extra.FAILURE_RESULT"; + "android.credentials.selection.extra.FAILURE_RESULT"; @Nullable private final String mErrorMessage; @@ -66,7 +72,7 @@ public final class FailureDialogResult extends BaseDialogResult implements Parce return mErrorMessage; } - protected FailureDialogResult(@NonNull Parcel in) { + private FailureDialogResult(@NonNull Parcel in) { super(in); mErrorMessage = in.readString8(); } diff --git a/core/java/android/credentials/ui/FailureResult.java b/core/java/android/credentials/selection/FailureResult.java index ec584170fba2..93ba671fa14f 100644 --- a/core/java/android/credentials/ui/FailureResult.java +++ b/core/java/android/credentials/selection/FailureResult.java @@ -14,11 +14,15 @@ * limitations under the License. */ -package android.credentials.ui; +package android.credentials.selection; +import static android.credentials.flags.Flags.FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED; + +import android.annotation.FlaggedApi; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.SystemApi; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -28,7 +32,9 @@ import java.lang.annotation.RetentionPolicy; * * @hide */ -public final class FailureResult implements UiResult { +@SystemApi +@FlaggedApi(FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED) +public final class FailureResult { @Nullable private final String mErrorMessage; @NonNull diff --git a/core/java/android/credentials/ui/GetCredentialProviderData.java b/core/java/android/credentials/selection/GetCredentialProviderData.java index 481419b4f732..2d09f6052db8 100644 --- a/core/java/android/credentials/ui/GetCredentialProviderData.java +++ b/core/java/android/credentials/selection/GetCredentialProviderData.java @@ -14,8 +14,11 @@ * limitations under the License. */ -package android.credentials.ui; +package android.credentials.selection; +import static android.credentials.flags.Flags.FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED; + +import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.TestApi; @@ -33,6 +36,7 @@ import java.util.List; * @hide */ @TestApi +@FlaggedApi(FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED) public final class GetCredentialProviderData extends ProviderData implements Parcelable { @NonNull private final List<Entry> mCredentialEntries; @@ -141,6 +145,7 @@ public final class GetCredentialProviderData extends ProviderData implements Par * @hide */ @TestApi + @FlaggedApi(FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED) public static final class Builder { @NonNull private String mProviderFlattenedComponentName; diff --git a/core/java/android/credentials/ui/GetCredentialProviderInfo.java b/core/java/android/credentials/selection/GetCredentialProviderInfo.java index bac71472acd1..db0fb84fa76c 100644 --- a/core/java/android/credentials/ui/GetCredentialProviderInfo.java +++ b/core/java/android/credentials/selection/GetCredentialProviderInfo.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package android.credentials.ui; +package android.credentials.selection; import android.annotation.NonNull; import android.annotation.Nullable; diff --git a/core/java/android/credentials/ui/IntentFactory.java b/core/java/android/credentials/selection/IntentFactory.java index 5e1e0efe39c4..c3a09ae61754 100644 --- a/core/java/android/credentials/ui/IntentFactory.java +++ b/core/java/android/credentials/selection/IntentFactory.java @@ -14,8 +14,11 @@ * limitations under the License. */ -package android.credentials.ui; +package android.credentials.selection; +import static android.credentials.flags.Flags.FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED; + +import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.annotation.SuppressLint; import android.annotation.TestApi; @@ -34,6 +37,7 @@ import java.util.ArrayList; * @hide */ @TestApi +@FlaggedApi(FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED) public class IntentFactory { /** diff --git a/core/java/android/credentials/ui/IntentHelper.java b/core/java/android/credentials/selection/IntentHelper.java index c5f34c1440a7..6bcd05afc00f 100644 --- a/core/java/android/credentials/ui/IntentHelper.java +++ b/core/java/android/credentials/selection/IntentHelper.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package android.credentials.ui; +package android.credentials.selection; import android.annotation.NonNull; import android.annotation.Nullable; diff --git a/core/java/android/credentials/ui/ProviderData.java b/core/java/android/credentials/selection/ProviderData.java index 1e5aa24d462d..e7a7d7744585 100644 --- a/core/java/android/credentials/ui/ProviderData.java +++ b/core/java/android/credentials/selection/ProviderData.java @@ -14,8 +14,11 @@ * limitations under the License. */ -package android.credentials.ui; +package android.credentials.selection; +import static android.credentials.flags.Flags.FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED; + +import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.annotation.SuppressLint; import android.annotation.TestApi; @@ -30,6 +33,7 @@ import com.android.internal.util.AnnotationValidations; * @hide */ @TestApi +@FlaggedApi(FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED) @SuppressLint({"ParcelCreator", "ParcelNotFinal"}) public abstract class ProviderData implements Parcelable { @@ -38,13 +42,13 @@ public abstract class ProviderData implements Parcelable { * launching the UX activities. */ public static final String EXTRA_ENABLED_PROVIDER_DATA_LIST = - "android.credentials.ui.extra.ENABLED_PROVIDER_DATA_LIST"; + "android.credentials.selection.extra.ENABLED_PROVIDER_DATA_LIST"; /** * The intent extra key for the list of {@code ProviderData} from disabled providers when * launching the UX activities. */ public static final String EXTRA_DISABLED_PROVIDER_DATA_LIST = - "android.credentials.ui.extra.DISABLED_PROVIDER_DATA_LIST"; + "android.credentials.selection.extra.DISABLED_PROVIDER_DATA_LIST"; @NonNull private final String mProviderFlattenedComponentName; @@ -63,6 +67,9 @@ public abstract class ProviderData implements Parcelable { return mProviderFlattenedComponentName; } + @SuppressLint("ParcelConstructor") // Test API only. This is never intended to be officially + // exposed. Instead proper final wrapper classes are defined (e.g. + // {@code GetCredentialProviderInfo}). protected ProviderData(@NonNull Parcel in) { String providerFlattenedComponentName = in.readString8(); mProviderFlattenedComponentName = providerFlattenedComponentName; diff --git a/core/java/android/credentials/ui/ProviderPendingIntentResponse.java b/core/java/android/credentials/selection/ProviderPendingIntentResponse.java index 11cc21f9d2db..281f34a5d195 100644 --- a/core/java/android/credentials/ui/ProviderPendingIntentResponse.java +++ b/core/java/android/credentials/selection/ProviderPendingIntentResponse.java @@ -14,14 +14,19 @@ * limitations under the License. */ -package android.credentials.ui; +package android.credentials.selection; +import static android.credentials.flags.Flags.FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED; + +import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SuppressLint; +import android.annotation.SystemApi; import android.content.Intent; import android.os.Parcel; import android.os.Parcelable; +import android.os.ResultReceiver; /** * Result of launching a provider's PendingIntent associated with an {@link Entry} after it is @@ -33,12 +38,29 @@ import android.os.Parcelable; * * @hide */ +@SystemApi +@FlaggedApi(FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED) public final class ProviderPendingIntentResponse implements Parcelable { private final int mResultCode; @Nullable private final Intent mResultData; - /** Constructs a {@link ProviderPendingIntentResponse}. */ + /** + * Constructs a {@link ProviderPendingIntentResponse}. + * + * When a user makes a selection, you should launch the associated provider PendingIntent, + * and expect the provider activity to complete and set + * {@link android.app.Activity#setResult(int, Intent)}. You should then immediately pass back + * the provider activity result code and data to the system service using this data class, + * via the {@link ResultHelper#sendUserSelectionResult(ResultReceiver, UserSelectionResult)} + * API. + * + * @param resultCode the resultCode returned from the provider activity + * @param resultData the result data returned from the provider activity; only set to null if + * the provider result (a provider would set it via + * {@link android.app.Activity#setResult(int, Intent)}) your UI received + * was actually null + */ public ProviderPendingIntentResponse(int resultCode, @Nullable Intent resultData) { mResultCode = resultCode; mResultData = resultData; @@ -73,14 +95,29 @@ public final class ProviderPendingIntentResponse implements Parcelable { dest.writeTypedObject(mResultData, flags); } - /** Returns the result code associated with this provider PendingIntent activity result. */ + /** + * Returns the result code associated with this provider PendingIntent activity result, i.e. + * the {@code resultCode} that the provider activity has set using the + * {@link android.app.Activity#setResult(int, Intent)} API. + */ public int getResultCode() { return mResultCode; } - /** Returns the result data associated with this provider PendingIntent activity result. */ + /** + * Returns the result data associated with this provider PendingIntent activity result, i.e. + * the {@code data} that the provider activity has set using the + * {@link android.app.Activity#setResult(int, Intent)} API. + * + * Notice that this value can be null if the provider UI result (a provider would set it via + * {@link android.app.Activity#setResult(int, Intent)}) that your UI received was actually null, + * which indicates an implementation error on the provider side. The system service will + * gracefully handle this by passing back an API exception ( + * {@link android.credentials.GetCredentialException} or + * {@link android.credentials.CreateCredentialException}). + */ @SuppressLint("IntentBuilderName") // Not building a new intent. - @NonNull + @Nullable public Intent getResultData() { return mResultData; } diff --git a/core/java/android/credentials/ui/RequestInfo.java b/core/java/android/credentials/selection/RequestInfo.java index f65158444e48..7d6ea7ee6b8c 100644 --- a/core/java/android/credentials/ui/RequestInfo.java +++ b/core/java/android/credentials/selection/RequestInfo.java @@ -14,8 +14,11 @@ * limitations under the License. */ -package android.credentials.ui; +package android.credentials.selection; +import static android.credentials.flags.Flags.FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED; + +import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.StringDef; @@ -39,39 +42,46 @@ import java.util.List; * @hide */ @TestApi +@FlaggedApi(FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED) public final class RequestInfo implements Parcelable { /** * The intent extra key for the {@code RequestInfo} object when launching the UX * activities. */ - @NonNull public static final String EXTRA_REQUEST_INFO = - "android.credentials.ui.extra.REQUEST_INFO"; + @NonNull + public static final String EXTRA_REQUEST_INFO = + "android.credentials.selection.extra.REQUEST_INFO"; /** * Type value for any request that does not require UI. */ - @NonNull public static final String TYPE_UNDEFINED = "android.credentials.ui.TYPE_UNDEFINED"; + @NonNull + public static final String TYPE_UNDEFINED = "android.credentials.selection.TYPE_UNDEFINED"; /** * Type value for a getCredential request. */ - @NonNull public static final String TYPE_GET = "android.credentials.ui.TYPE_GET"; + @NonNull + public static final String TYPE_GET = "android.credentials.selection.TYPE_GET"; /** * Type value for a getCredential request that utilizes the credential registry. * * @hide */ - @NonNull public static final String TYPE_GET_VIA_REGISTRY = - "android.credentials.ui.TYPE_GET_VIA_REGISTRY"; + @NonNull + public static final String TYPE_GET_VIA_REGISTRY = + "android.credentials.selection.TYPE_GET_VIA_REGISTRY"; /** * Type value for a createCredential request. */ - @NonNull public static final String TYPE_CREATE = "android.credentials.ui.TYPE_CREATE"; + @NonNull + public static final String TYPE_CREATE = "android.credentials.selection.TYPE_CREATE"; /** @hide */ @Retention(RetentionPolicy.SOURCE) - @StringDef(value = { TYPE_GET, TYPE_CREATE }) - public @interface RequestType {} + @StringDef(value = {TYPE_GET, TYPE_CREATE}) + public @interface RequestType { + } @NonNull private final IBinder mToken; @@ -82,6 +92,9 @@ public final class RequestInfo implements Parcelable { @NonNull private final List<String> mDefaultProviderIds; + @NonNull + private final List<String> mRegistryProviderIds; + @Nullable private final GetCredentialRequest mGetCredentialRequest; @@ -105,11 +118,7 @@ public final class RequestInfo implements Parcelable { /*defaultProviderIds=*/ new ArrayList<>()); } - /** - * Creates new {@code RequestInfo} for a create-credential flow. - * - * @hide - */ + /** Creates new {@code RequestInfo} for a create-credential flow. */ @NonNull public static RequestInfo newCreateRequestInfo( @NonNull IBinder token, @NonNull CreateCredentialRequest createCredentialRequest, @@ -120,11 +129,7 @@ public final class RequestInfo implements Parcelable { hasPermissionToOverrideDefault, defaultProviderIds); } - /** - * Creates new {@code RequestInfo} for a get-credential flow. - * - * @hide - */ + /** Creates new {@code RequestInfo} for a get-credential flow. */ @NonNull public static RequestInfo newGetRequestInfo( @NonNull IBinder token, @NonNull GetCredentialRequest getCredentialRequest, @@ -147,11 +152,7 @@ public final class RequestInfo implements Parcelable { } - /** - * Returns whether the calling package has the permission - * - * @hide - */ + /** Returns whether the calling package has the permission. */ public boolean hasPermissionToOverrideDefault() { return mHasPermissionToOverrideDefault; } @@ -185,13 +186,11 @@ public final class RequestInfo implements Parcelable { } /** - * Returns default provider identifier (flattened component name) configured from the user + * Returns default provider identifiers (component or package name) configured from the user * settings. * * Will only be possibly non-empty for the create use case. Not meaningful for the sign-in use * case. - * - * @hide */ @NonNull public List<String> getDefaultProviderIds() { @@ -199,6 +198,15 @@ public final class RequestInfo implements Parcelable { } /** + * Returns provider identifiers (component or package name) that have been validated to provide + * registry entries. + */ + @NonNull + public List<String> getRegistryProviderIds() { + return mRegistryProviderIds; + } + + /** * Returns the non-null GetCredentialRequest when the type of the request is {@link * #TYPE_GET}, or null otherwise. */ @@ -220,6 +228,7 @@ public final class RequestInfo implements Parcelable { mGetCredentialRequest = getCredentialRequest; mHasPermissionToOverrideDefault = hasPermissionToOverrideDefault; mDefaultProviderIds = defaultProviderIds == null ? new ArrayList<>() : defaultProviderIds; + mRegistryProviderIds = new ArrayList<>(); } private RequestInfo(@NonNull Parcel in) { @@ -241,6 +250,7 @@ public final class RequestInfo implements Parcelable { mGetCredentialRequest = getCredentialRequest; mHasPermissionToOverrideDefault = in.readBoolean(); mDefaultProviderIds = in.createStringArrayList(); + mRegistryProviderIds = in.createStringArrayList(); } @Override @@ -252,6 +262,7 @@ public final class RequestInfo implements Parcelable { dest.writeTypedObject(mGetCredentialRequest, flags); dest.writeBoolean(mHasPermissionToOverrideDefault); dest.writeStringList(mDefaultProviderIds); + dest.writeStringList(mRegistryProviderIds); } @Override @@ -259,7 +270,8 @@ public final class RequestInfo implements Parcelable { return 0; } - @NonNull public static final Creator<RequestInfo> CREATOR = new Creator<>() { + @NonNull + public static final Creator<RequestInfo> CREATOR = new Creator<>() { @Override public RequestInfo createFromParcel(@NonNull Parcel in) { return new RequestInfo(in); diff --git a/core/java/android/credentials/ui/ResultHelper.java b/core/java/android/credentials/selection/ResultHelper.java index 7b9d5e87d666..d6347b0086ff 100644 --- a/core/java/android/credentials/ui/ResultHelper.java +++ b/core/java/android/credentials/selection/ResultHelper.java @@ -14,9 +14,13 @@ * limitations under the License. */ -package android.credentials.ui; +package android.credentials.selection; +import static android.credentials.flags.Flags.FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED; + +import android.annotation.FlaggedApi; import android.annotation.NonNull; +import android.annotation.SystemApi; import android.content.Intent; import android.os.Bundle; import android.os.ResultReceiver; @@ -26,13 +30,16 @@ import android.os.ResultReceiver; * * @hide */ +@SystemApi +@FlaggedApi(FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED) public final class ResultHelper { /** * Sends the {@code failureResult} that caused the UI to stop back to the CredentialManager * service. * - * The {code resultReceiver} for a UI flow can be extracted from the UI launch intent via - * {@link IntentHelper#extractResultReceiver(Intent)}. + * @param resultReceiver the ResultReceiver sent from the system service, that can be extracted + * from the launch intent via + * {@link IntentHelper#extractResultReceiver(Intent)} */ public static void sendFailureResult(@NonNull ResultReceiver resultReceiver, @NonNull FailureResult failureResult) { @@ -46,8 +53,9 @@ public final class ResultHelper { /** * Sends the completed {@code userSelectionResult} back to the CredentialManager service. * - * The {code resultReceiver} for a UI flow can be extracted from the UI launch intent via - * {@link IntentHelper#extractResultReceiver(Intent)}. + * @param resultReceiver the ResultReceiver sent from the system service, that can be extracted + * from the launch intent via + * {@link IntentHelper#extractResultReceiver(Intent)} */ public static void sendUserSelectionResult(@NonNull ResultReceiver resultReceiver, @NonNull UserSelectionResult userSelectionResult) { diff --git a/core/java/android/credentials/ui/UserSelectionDialogResult.java b/core/java/android/credentials/selection/UserSelectionDialogResult.java index 3089bf674b95..50d5aa3c51bd 100644 --- a/core/java/android/credentials/ui/UserSelectionDialogResult.java +++ b/core/java/android/credentials/selection/UserSelectionDialogResult.java @@ -14,10 +14,14 @@ * limitations under the License. */ -package android.credentials.ui; +package android.credentials.selection; +import static android.credentials.flags.Flags.FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED; + +import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.TestApi; import android.os.Bundle; import android.os.IBinder; import android.os.Parcel; @@ -30,17 +34,19 @@ import com.android.internal.util.AnnotationValidations; * * @hide */ +@TestApi +@FlaggedApi(FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED) public final class UserSelectionDialogResult extends BaseDialogResult implements Parcelable { /** Parses and returns a UserSelectionDialogResult from the given resultData. */ @Nullable public static UserSelectionDialogResult fromResultData(@NonNull Bundle resultData) { return resultData.getParcelable( - EXTRA_USER_SELECTION_RESULT, UserSelectionDialogResult.class); + EXTRA_USER_SELECTION_RESULT, UserSelectionDialogResult.class); } /** * Used for the UX to construct the {@code resultData Bundle} to send via the {@code - * ResultReceiver}. + * ResultReceiver}. */ public static void addToBundle( @NonNull UserSelectionDialogResult result, @NonNull Bundle bundle) { @@ -52,12 +58,16 @@ public final class UserSelectionDialogResult extends BaseDialogResult implements * selector activity finishes. */ private static final String EXTRA_USER_SELECTION_RESULT = - "android.credentials.ui.extra.USER_SELECTION_RESULT"; + "android.credentials.selection.extra.USER_SELECTION_RESULT"; - @NonNull private final String mProviderId; - @NonNull private final String mEntryKey; - @NonNull private final String mEntrySubkey; - @Nullable private ProviderPendingIntentResponse mProviderPendingIntentResponse; + @NonNull + private final String mProviderId; + @NonNull + private final String mEntryKey; + @NonNull + private final String mEntrySubkey; + @Nullable + private ProviderPendingIntentResponse mProviderPendingIntentResponse; public UserSelectionDialogResult( @Nullable IBinder requestToken, @NonNull String providerId, @@ -103,7 +113,7 @@ public final class UserSelectionDialogResult extends BaseDialogResult implements return mProviderPendingIntentResponse; } - protected UserSelectionDialogResult(@NonNull Parcel in) { + private UserSelectionDialogResult(@NonNull Parcel in) { super(in); String providerId = in.readString8(); String entryKey = in.readString8(); @@ -134,14 +144,14 @@ public final class UserSelectionDialogResult extends BaseDialogResult implements public static final @NonNull Creator<UserSelectionDialogResult> CREATOR = new Creator<UserSelectionDialogResult>() { - @Override - public UserSelectionDialogResult createFromParcel(@NonNull Parcel in) { - return new UserSelectionDialogResult(in); - } - - @Override - public UserSelectionDialogResult[] newArray(int size) { - return new UserSelectionDialogResult[size]; - } - }; + @Override + public UserSelectionDialogResult createFromParcel(@NonNull Parcel in) { + return new UserSelectionDialogResult(in); + } + + @Override + public UserSelectionDialogResult[] newArray(int size) { + return new UserSelectionDialogResult[size]; + } + }; } diff --git a/core/java/android/credentials/ui/UserSelectionResult.java b/core/java/android/credentials/selection/UserSelectionResult.java index 431dc631f3f6..235a5d5723ea 100644 --- a/core/java/android/credentials/ui/UserSelectionResult.java +++ b/core/java/android/credentials/selection/UserSelectionResult.java @@ -14,10 +14,14 @@ * limitations under the License. */ -package android.credentials.ui; +package android.credentials.selection; +import static android.credentials.flags.Flags.FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED; + +import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.SystemApi; import com.android.internal.util.Preconditions; @@ -27,7 +31,9 @@ import com.android.internal.util.Preconditions; * * @hide */ -public final class UserSelectionResult implements UiResult { +@SystemApi +@FlaggedApi(FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED) +public final class UserSelectionResult { @NonNull private final String mProviderId; @NonNull @@ -40,31 +46,46 @@ public final class UserSelectionResult implements UiResult { /** * Constructs a {@link UserSelectionResult}. * - * @throws IllegalArgumentException if {@code providerId} is empty + * @param providerId the provider identifier (component name or package name) whose entry was + * selected by the user; the value should map to the + * {@link GetCredentialProviderInfo#getProviderName()} that provided this entry + * @param entryKey the identifier of this selected entry, i.e. the selected entry's + * {@link Entry#getKey()} + * @param entrySubkey the sub-identifier of this selected entry, i.e. the selected entry's + * {@link Entry#getSubkey()} + * @param providerPendingIntentResponse the provider activity result of launching the provider + * PendingIntent associated with this selection; or null + * if the associated selection didn't have an associated + * provider PendingIntent + * @throws IllegalArgumentException if {@code providerId}, {@code entryKey}, or + * {@code entrySubkey} is empty */ public UserSelectionResult(@NonNull String providerId, @NonNull String entryKey, @NonNull String entrySubkey, @Nullable ProviderPendingIntentResponse providerPendingIntentResponse) { mProviderId = Preconditions.checkStringNotEmpty(providerId); - mEntryKey = Preconditions.checkNotNull(entryKey); - mEntrySubkey = Preconditions.checkNotNull(entrySubkey); + mEntryKey = Preconditions.checkStringNotEmpty(entryKey); + mEntrySubkey = Preconditions.checkStringNotEmpty(entrySubkey); mProviderPendingIntentResponse = providerPendingIntentResponse; } - /** Returns provider package name whose entry was selected by the user. */ + /** + * Returns the provider identifier (component name or package name) whose entry was selected by + * the user. + */ @NonNull public String getProviderId() { return mProviderId; } - /** Returns the key of the visual entry that the user selected. */ + /** Returns the identifier of the visual entry that the user selected. */ @NonNull public String getEntryKey() { return mEntryKey; } - /** Returns the subkey of the visual entry that the user selected. */ + /** Returns the sub-identifier of the visual entry that the user selected. */ @NonNull public String getEntrySubkey() { return mEntrySubkey; diff --git a/core/java/android/credentials/ui/UiResult.java b/core/java/android/credentials/ui/UiResult.java deleted file mode 100644 index 692584d1a561..000000000000 --- a/core/java/android/credentials/ui/UiResult.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (C) 2024 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.credentials.ui; - -/** - * Base class for different types of ui results. - * - * @hide - */ -public interface UiResult {} diff --git a/packages/CredentialManager/shared/src/com/android/credentialmanager/IntentParser.kt b/packages/CredentialManager/shared/src/com/android/credentialmanager/IntentParser.kt index 325d3f819f14..0fa248de4465 100644 --- a/packages/CredentialManager/shared/src/com/android/credentialmanager/IntentParser.kt +++ b/packages/CredentialManager/shared/src/com/android/credentialmanager/IntentParser.kt @@ -19,7 +19,7 @@ package com.android.credentialmanager import android.content.Context import android.content.Intent import android.content.pm.PackageManager -import android.credentials.ui.RequestInfo +import android.credentials.selection.RequestInfo import android.util.Log import com.android.credentialmanager.ktx.appLabel import com.android.credentialmanager.ktx.cancelUiRequest diff --git a/packages/CredentialManager/shared/src/com/android/credentialmanager/client/CredentialManagerClient.kt b/packages/CredentialManager/shared/src/com/android/credentialmanager/client/CredentialManagerClient.kt index 49387cf410ac..3fbff37e0416 100644 --- a/packages/CredentialManager/shared/src/com/android/credentialmanager/client/CredentialManagerClient.kt +++ b/packages/CredentialManager/shared/src/com/android/credentialmanager/client/CredentialManagerClient.kt @@ -17,8 +17,8 @@ package com.android.credentialmanager.client import android.content.Intent -import android.credentials.ui.BaseDialogResult -import android.credentials.ui.UserSelectionDialogResult +import android.credentials.selection.BaseDialogResult +import android.credentials.selection.UserSelectionDialogResult import com.android.credentialmanager.model.Request import kotlinx.coroutines.flow.StateFlow diff --git a/packages/CredentialManager/shared/src/com/android/credentialmanager/client/impl/CredentialManagerClientImpl.kt b/packages/CredentialManager/shared/src/com/android/credentialmanager/client/impl/CredentialManagerClientImpl.kt index 3ef65b052560..ec1f052839e4 100644 --- a/packages/CredentialManager/shared/src/com/android/credentialmanager/client/impl/CredentialManagerClientImpl.kt +++ b/packages/CredentialManager/shared/src/com/android/credentialmanager/client/impl/CredentialManagerClientImpl.kt @@ -18,8 +18,8 @@ package com.android.credentialmanager.client.impl import android.content.Context import android.content.Intent -import android.credentials.ui.BaseDialogResult -import android.credentials.ui.UserSelectionDialogResult +import android.credentials.selection.BaseDialogResult +import android.credentials.selection.UserSelectionDialogResult import android.os.Bundle import android.util.Log import com.android.credentialmanager.TAG diff --git a/packages/CredentialManager/shared/src/com/android/credentialmanager/ktx/CredentialKtx.kt b/packages/CredentialManager/shared/src/com/android/credentialmanager/ktx/CredentialKtx.kt index f063074b39b4..a5f227a3adc9 100644 --- a/packages/CredentialManager/shared/src/com/android/credentialmanager/ktx/CredentialKtx.kt +++ b/packages/CredentialManager/shared/src/com/android/credentialmanager/ktx/CredentialKtx.kt @@ -23,9 +23,9 @@ import android.content.pm.PackageInfo import android.content.pm.PackageManager import android.credentials.Credential import android.credentials.flags.Flags -import android.credentials.ui.AuthenticationEntry -import android.credentials.ui.Entry -import android.credentials.ui.GetCredentialProviderData +import android.credentials.selection.AuthenticationEntry +import android.credentials.selection.Entry +import android.credentials.selection.GetCredentialProviderData import android.graphics.drawable.Drawable import android.text.TextUtils import android.util.Log diff --git a/packages/CredentialManager/shared/src/com/android/credentialmanager/ktx/IntentKtx.kt b/packages/CredentialManager/shared/src/com/android/credentialmanager/ktx/IntentKtx.kt index 3abdb6f9c9f2..4155b0398ce0 100644 --- a/packages/CredentialManager/shared/src/com/android/credentialmanager/ktx/IntentKtx.kt +++ b/packages/CredentialManager/shared/src/com/android/credentialmanager/ktx/IntentKtx.kt @@ -17,12 +17,12 @@ package com.android.credentialmanager.ktx import android.content.Intent -import android.credentials.ui.CancelUiRequest -import android.credentials.ui.Constants -import android.credentials.ui.CreateCredentialProviderData -import android.credentials.ui.GetCredentialProviderData -import android.credentials.ui.ProviderData -import android.credentials.ui.RequestInfo +import android.credentials.selection.CancelUiRequest +import android.credentials.selection.Constants +import android.credentials.selection.CreateCredentialProviderData +import android.credentials.selection.GetCredentialProviderData +import android.credentials.selection.ProviderData +import android.credentials.selection.RequestInfo import android.os.ResultReceiver val Intent.cancelUiRequest: CancelUiRequest? diff --git a/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt b/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt index c0d71494e020..6cafcf7cd976 100644 --- a/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt +++ b/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt @@ -18,16 +18,16 @@ package com.android.credentialmanager import android.content.Context import android.content.Intent -import android.credentials.ui.CancelUiRequest -import android.credentials.ui.Constants -import android.credentials.ui.CreateCredentialProviderData -import android.credentials.ui.GetCredentialProviderData -import android.credentials.ui.DisabledProviderData -import android.credentials.ui.ProviderData -import android.credentials.ui.RequestInfo -import android.credentials.ui.BaseDialogResult -import android.credentials.ui.ProviderPendingIntentResponse -import android.credentials.ui.UserSelectionDialogResult +import android.credentials.selection.CancelUiRequest +import android.credentials.selection.Constants +import android.credentials.selection.CreateCredentialProviderData +import android.credentials.selection.GetCredentialProviderData +import android.credentials.selection.DisabledProviderData +import android.credentials.selection.ProviderData +import android.credentials.selection.RequestInfo +import android.credentials.selection.BaseDialogResult +import android.credentials.selection.ProviderPendingIntentResponse +import android.credentials.selection.UserSelectionDialogResult import android.os.IBinder import android.os.Bundle import android.os.ResultReceiver diff --git a/packages/CredentialManager/src/com/android/credentialmanager/CredentialSelectorActivity.kt b/packages/CredentialManager/src/com/android/credentialmanager/CredentialSelectorActivity.kt index f8ffc9e26799..fa975aabc867 100644 --- a/packages/CredentialManager/src/com/android/credentialmanager/CredentialSelectorActivity.kt +++ b/packages/CredentialManager/src/com/android/credentialmanager/CredentialSelectorActivity.kt @@ -18,8 +18,8 @@ package com.android.credentialmanager import android.app.Activity import android.content.Intent -import android.credentials.ui.BaseDialogResult -import android.credentials.ui.RequestInfo +import android.credentials.selection.BaseDialogResult +import android.credentials.selection.RequestInfo import android.net.Uri import android.os.Bundle import android.os.ResultReceiver @@ -213,7 +213,7 @@ class CredentialSelectorActivity : ComponentActivity() { private fun onInitializationError(e: Exception, intent: Intent) { Log.e(Constants.LOG_TAG, "Failed to show the credential selector; closing the activity", e) val resultReceiver = intent.getParcelableExtra( - android.credentials.ui.Constants.EXTRA_RESULT_RECEIVER, + android.credentials.selection.Constants.EXTRA_RESULT_RECEIVER, ResultReceiver::class.java ) val requestInfo = intent.extras?.getParcelable( diff --git a/packages/CredentialManager/src/com/android/credentialmanager/DataConverter.kt b/packages/CredentialManager/src/com/android/credentialmanager/DataConverter.kt index fc3970de2cee..64595e2642f5 100644 --- a/packages/CredentialManager/src/com/android/credentialmanager/DataConverter.kt +++ b/packages/CredentialManager/src/com/android/credentialmanager/DataConverter.kt @@ -20,11 +20,11 @@ import android.content.ComponentName import android.content.Context import android.content.pm.PackageInfo import android.content.pm.PackageManager -import android.credentials.ui.CreateCredentialProviderData -import android.credentials.ui.DisabledProviderData -import android.credentials.ui.Entry -import android.credentials.ui.GetCredentialProviderData -import android.credentials.ui.RequestInfo +import android.credentials.selection.CreateCredentialProviderData +import android.credentials.selection.DisabledProviderData +import android.credentials.selection.Entry +import android.credentials.selection.GetCredentialProviderData +import android.credentials.selection.RequestInfo import android.graphics.drawable.Drawable import android.text.TextUtils import android.util.Log diff --git a/packages/CredentialManager/src/com/android/credentialmanager/autofill/CredentialAutofillService.kt b/packages/CredentialManager/src/com/android/credentialmanager/autofill/CredentialAutofillService.kt index 985f3228f402..1f1d236f2108 100644 --- a/packages/CredentialManager/src/com/android/credentialmanager/autofill/CredentialAutofillService.kt +++ b/packages/CredentialManager/src/com/android/credentialmanager/autofill/CredentialAutofillService.kt @@ -25,8 +25,8 @@ import android.credentials.GetCredentialRequest import android.credentials.GetCandidateCredentialsResponse import android.credentials.GetCandidateCredentialsException import android.credentials.CredentialOption +import android.credentials.selection.GetCredentialProviderData import android.graphics.drawable.Icon -import android.credentials.ui.GetCredentialProviderData import android.os.Bundle import android.os.CancellationSignal import android.os.OutcomeReceiver @@ -51,7 +51,6 @@ import android.widget.inline.InlinePresentationSpec import android.credentials.CredentialManager import android.widget.RemoteViews import androidx.autofill.inline.v1.InlineSuggestionUi -import androidx.core.content.ContextCompat import androidx.credentials.provider.CustomCredentialEntry import androidx.credentials.provider.PasswordCredentialEntry import androidx.credentials.provider.PublicKeyCredentialEntry diff --git a/packages/CredentialManager/src/com/android/credentialmanager/common/DialogType.kt b/packages/CredentialManager/src/com/android/credentialmanager/common/DialogType.kt index f40dc7e54870..22a5ec17867a 100644 --- a/packages/CredentialManager/src/com/android/credentialmanager/common/DialogType.kt +++ b/packages/CredentialManager/src/com/android/credentialmanager/common/DialogType.kt @@ -16,7 +16,7 @@ package com.android.credentialmanager.common -import android.credentials.ui.RequestInfo +import android.credentials.selection.RequestInfo enum class DialogType { CREATE_CREDENTIAL, diff --git a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/single/password/SinglePasswordScreenViewModel.kt b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/single/password/SinglePasswordScreenViewModel.kt index 4f9fc46e0fce..c9c66b4a7271 100644 --- a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/single/password/SinglePasswordScreenViewModel.kt +++ b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/single/password/SinglePasswordScreenViewModel.kt @@ -17,8 +17,8 @@ package com.android.credentialmanager.ui.screens.single.password import android.content.Intent -import android.credentials.ui.ProviderPendingIntentResponse -import android.credentials.ui.UserSelectionDialogResult +import android.credentials.selection.ProviderPendingIntentResponse +import android.credentials.selection.UserSelectionDialogResult import androidx.activity.result.IntentSenderRequest import androidx.annotation.MainThread import androidx.lifecycle.ViewModel diff --git a/services/credentials/java/com/android/server/credentials/ClearRequestSession.java b/services/credentials/java/com/android/server/credentials/ClearRequestSession.java index db985fd16749..b1349ea92a4f 100644 --- a/services/credentials/java/com/android/server/credentials/ClearRequestSession.java +++ b/services/credentials/java/com/android/server/credentials/ClearRequestSession.java @@ -23,8 +23,8 @@ import android.credentials.ClearCredentialStateException; import android.credentials.ClearCredentialStateRequest; import android.credentials.CredentialProviderInfo; import android.credentials.IClearCredentialStateCallback; -import android.credentials.ui.ProviderData; -import android.credentials.ui.RequestInfo; +import android.credentials.selection.ProviderData; +import android.credentials.selection.RequestInfo; import android.os.CancellationSignal; import android.os.RemoteException; import android.service.credentials.CallingAppInfo; diff --git a/services/credentials/java/com/android/server/credentials/CreateRequestSession.java b/services/credentials/java/com/android/server/credentials/CreateRequestSession.java index b24accbe3231..3dcf42d80d60 100644 --- a/services/credentials/java/com/android/server/credentials/CreateRequestSession.java +++ b/services/credentials/java/com/android/server/credentials/CreateRequestSession.java @@ -27,8 +27,8 @@ import android.credentials.CreateCredentialResponse; import android.credentials.CredentialManager; import android.credentials.CredentialProviderInfo; import android.credentials.ICreateCredentialCallback; -import android.credentials.ui.ProviderData; -import android.credentials.ui.RequestInfo; +import android.credentials.selection.ProviderData; +import android.credentials.selection.RequestInfo; import android.os.CancellationSignal; import android.os.RemoteException; import android.service.credentials.CallingAppInfo; diff --git a/services/credentials/java/com/android/server/credentials/CredentialManagerUi.java b/services/credentials/java/com/android/server/credentials/CredentialManagerUi.java index f092dccbcfd1..4203576ac521 100644 --- a/services/credentials/java/com/android/server/credentials/CredentialManagerUi.java +++ b/services/credentials/java/com/android/server/credentials/CredentialManagerUi.java @@ -22,11 +22,11 @@ import android.content.Context; import android.content.Intent; import android.credentials.CredentialManager; import android.credentials.CredentialProviderInfo; -import android.credentials.ui.DisabledProviderData; -import android.credentials.ui.IntentFactory; -import android.credentials.ui.ProviderData; -import android.credentials.ui.RequestInfo; -import android.credentials.ui.UserSelectionDialogResult; +import android.credentials.selection.DisabledProviderData; +import android.credentials.selection.IntentFactory; +import android.credentials.selection.ProviderData; +import android.credentials.selection.RequestInfo; +import android.credentials.selection.UserSelectionDialogResult; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; diff --git a/services/credentials/java/com/android/server/credentials/GetCandidateRequestSession.java b/services/credentials/java/com/android/server/credentials/GetCandidateRequestSession.java index 25281ba89960..7e709fec128b 100644 --- a/services/credentials/java/com/android/server/credentials/GetCandidateRequestSession.java +++ b/services/credentials/java/com/android/server/credentials/GetCandidateRequestSession.java @@ -26,9 +26,9 @@ import android.credentials.GetCandidateCredentialsResponse; import android.credentials.GetCredentialRequest; import android.credentials.GetCredentialResponse; import android.credentials.IGetCandidateCredentialsCallback; -import android.credentials.ui.GetCredentialProviderData; -import android.credentials.ui.ProviderData; -import android.credentials.ui.RequestInfo; +import android.credentials.selection.GetCredentialProviderData; +import android.credentials.selection.ProviderData; +import android.credentials.selection.RequestInfo; import android.os.CancellationSignal; import android.os.IBinder; import android.os.RemoteException; diff --git a/services/credentials/java/com/android/server/credentials/GetRequestSession.java b/services/credentials/java/com/android/server/credentials/GetRequestSession.java index 49ea19a6f098..b33f531afdac 100644 --- a/services/credentials/java/com/android/server/credentials/GetRequestSession.java +++ b/services/credentials/java/com/android/server/credentials/GetRequestSession.java @@ -26,8 +26,8 @@ import android.credentials.GetCredentialException; import android.credentials.GetCredentialRequest; import android.credentials.GetCredentialResponse; import android.credentials.IGetCredentialCallback; -import android.credentials.ui.ProviderData; -import android.credentials.ui.RequestInfo; +import android.credentials.selection.ProviderData; +import android.credentials.selection.RequestInfo; import android.os.Binder; import android.os.CancellationSignal; import android.os.RemoteException; diff --git a/services/credentials/java/com/android/server/credentials/PendingIntentResultHandler.java b/services/credentials/java/com/android/server/credentials/PendingIntentResultHandler.java index efb394d29826..21ac9e44de65 100644 --- a/services/credentials/java/com/android/server/credentials/PendingIntentResultHandler.java +++ b/services/credentials/java/com/android/server/credentials/PendingIntentResultHandler.java @@ -22,7 +22,7 @@ import android.credentials.CreateCredentialException; import android.credentials.CreateCredentialResponse; import android.credentials.GetCredentialException; import android.credentials.GetCredentialResponse; -import android.credentials.ui.ProviderPendingIntentResponse; +import android.credentials.selection.ProviderPendingIntentResponse; import android.service.credentials.BeginGetCredentialResponse; import android.service.credentials.CredentialProviderService; diff --git a/services/credentials/java/com/android/server/credentials/PrepareGetRequestSession.java b/services/credentials/java/com/android/server/credentials/PrepareGetRequestSession.java index fbfc9caf0205..30af56749e05 100644 --- a/services/credentials/java/com/android/server/credentials/PrepareGetRequestSession.java +++ b/services/credentials/java/com/android/server/credentials/PrepareGetRequestSession.java @@ -26,9 +26,9 @@ import android.credentials.GetCredentialRequest; import android.credentials.IGetCredentialCallback; import android.credentials.IPrepareGetCredentialCallback; import android.credentials.PrepareGetCredentialResponseInternal; -import android.credentials.ui.GetCredentialProviderData; -import android.credentials.ui.ProviderData; -import android.credentials.ui.RequestInfo; +import android.credentials.selection.GetCredentialProviderData; +import android.credentials.selection.ProviderData; +import android.credentials.selection.RequestInfo; import android.os.CancellationSignal; import android.os.RemoteException; import android.service.credentials.CallingAppInfo; diff --git a/services/credentials/java/com/android/server/credentials/ProviderClearSession.java b/services/credentials/java/com/android/server/credentials/ProviderClearSession.java index d4b88001111e..6a1b1db756b5 100644 --- a/services/credentials/java/com/android/server/credentials/ProviderClearSession.java +++ b/services/credentials/java/com/android/server/credentials/ProviderClearSession.java @@ -21,8 +21,8 @@ import android.annotation.UserIdInt; import android.content.Context; import android.credentials.ClearCredentialStateException; import android.credentials.CredentialProviderInfo; -import android.credentials.ui.ProviderData; -import android.credentials.ui.ProviderPendingIntentResponse; +import android.credentials.selection.ProviderData; +import android.credentials.selection.ProviderPendingIntentResponse; import android.os.ICancellationSignal; import android.service.credentials.CallingAppInfo; import android.service.credentials.ClearCredentialStateRequest; diff --git a/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java b/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java index 6f79852df02f..6361aeb4f0d7 100644 --- a/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java +++ b/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java @@ -25,9 +25,9 @@ import android.content.Intent; import android.credentials.CreateCredentialException; import android.credentials.CreateCredentialResponse; import android.credentials.CredentialProviderInfo; -import android.credentials.ui.CreateCredentialProviderData; -import android.credentials.ui.Entry; -import android.credentials.ui.ProviderPendingIntentResponse; +import android.credentials.selection.CreateCredentialProviderData; +import android.credentials.selection.Entry; +import android.credentials.selection.ProviderPendingIntentResponse; import android.os.Bundle; import android.os.ICancellationSignal; import android.service.credentials.BeginCreateCredentialRequest; diff --git a/services/credentials/java/com/android/server/credentials/ProviderGetSession.java b/services/credentials/java/com/android/server/credentials/ProviderGetSession.java index 7bd1cc4ca6c8..fcaef9ffb11b 100644 --- a/services/credentials/java/com/android/server/credentials/ProviderGetSession.java +++ b/services/credentials/java/com/android/server/credentials/ProviderGetSession.java @@ -26,10 +26,10 @@ import android.credentials.CredentialOption; import android.credentials.CredentialProviderInfo; import android.credentials.GetCredentialException; import android.credentials.GetCredentialResponse; -import android.credentials.ui.AuthenticationEntry; -import android.credentials.ui.Entry; -import android.credentials.ui.GetCredentialProviderData; -import android.credentials.ui.ProviderPendingIntentResponse; +import android.credentials.selection.AuthenticationEntry; +import android.credentials.selection.Entry; +import android.credentials.selection.GetCredentialProviderData; +import android.credentials.selection.ProviderPendingIntentResponse; import android.os.ICancellationSignal; import android.service.autofill.Flags; import android.service.credentials.Action; diff --git a/services/credentials/java/com/android/server/credentials/ProviderRegistryGetSession.java b/services/credentials/java/com/android/server/credentials/ProviderRegistryGetSession.java index bafa4a56b28a..f162916690fd 100644 --- a/services/credentials/java/com/android/server/credentials/ProviderRegistryGetSession.java +++ b/services/credentials/java/com/android/server/credentials/ProviderRegistryGetSession.java @@ -25,10 +25,10 @@ import android.content.Intent; import android.credentials.CredentialOption; import android.credentials.GetCredentialException; import android.credentials.GetCredentialResponse; -import android.credentials.ui.Entry; -import android.credentials.ui.GetCredentialProviderData; -import android.credentials.ui.ProviderData; -import android.credentials.ui.ProviderPendingIntentResponse; +import android.credentials.selection.Entry; +import android.credentials.selection.GetCredentialProviderData; +import android.credentials.selection.ProviderData; +import android.credentials.selection.ProviderPendingIntentResponse; import android.os.ICancellationSignal; import android.service.credentials.CallingAppInfo; import android.service.credentials.CredentialEntry; diff --git a/services/credentials/java/com/android/server/credentials/ProviderSession.java b/services/credentials/java/com/android/server/credentials/ProviderSession.java index f2055d0595be..c16e2327abfb 100644 --- a/services/credentials/java/com/android/server/credentials/ProviderSession.java +++ b/services/credentials/java/com/android/server/credentials/ProviderSession.java @@ -25,8 +25,8 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.credentials.Credential; import android.credentials.CredentialProviderInfo; -import android.credentials.ui.ProviderData; -import android.credentials.ui.ProviderPendingIntentResponse; +import android.credentials.selection.ProviderData; +import android.credentials.selection.ProviderPendingIntentResponse; import android.os.ICancellationSignal; import android.os.RemoteException; import android.util.Slog; diff --git a/services/credentials/java/com/android/server/credentials/RequestSession.java b/services/credentials/java/com/android/server/credentials/RequestSession.java index 67c52e6e4719..bf7df86890de 100644 --- a/services/credentials/java/com/android/server/credentials/RequestSession.java +++ b/services/credentials/java/com/android/server/credentials/RequestSession.java @@ -24,8 +24,8 @@ import android.content.Context; import android.content.Intent; import android.credentials.CredentialProviderInfo; import android.credentials.flags.Flags; -import android.credentials.ui.ProviderData; -import android.credentials.ui.UserSelectionDialogResult; +import android.credentials.selection.ProviderData; +import android.credentials.selection.UserSelectionDialogResult; import android.os.Binder; import android.os.CancellationSignal; import android.os.Handler; diff --git a/services/credentials/java/com/android/server/credentials/metrics/ApiName.java b/services/credentials/java/com/android/server/credentials/metrics/ApiName.java index d82834928999..23db11f3c9d1 100644 --- a/services/credentials/java/com/android/server/credentials/metrics/ApiName.java +++ b/services/credentials/java/com/android/server/credentials/metrics/ApiName.java @@ -16,10 +16,10 @@ package com.android.server.credentials.metrics; -import static android.credentials.ui.RequestInfo.TYPE_CREATE; -import static android.credentials.ui.RequestInfo.TYPE_GET; -import static android.credentials.ui.RequestInfo.TYPE_GET_VIA_REGISTRY; -import static android.credentials.ui.RequestInfo.TYPE_UNDEFINED; +import static android.credentials.selection.RequestInfo.TYPE_CREATE; +import static android.credentials.selection.RequestInfo.TYPE_GET; +import static android.credentials.selection.RequestInfo.TYPE_GET_VIA_REGISTRY; +import static android.credentials.selection.RequestInfo.TYPE_UNDEFINED; import static com.android.internal.util.FrameworkStatsLog.CREDENTIAL_MANAGER_INITIAL_PHASE_REPORTED__API_NAME__API_NAME_CLEAR_CREDENTIAL; import static com.android.internal.util.FrameworkStatsLog.CREDENTIAL_MANAGER_INITIAL_PHASE_REPORTED__API_NAME__API_NAME_CREATE_CREDENTIAL; @@ -32,7 +32,7 @@ import static com.android.internal.util.FrameworkStatsLog.CREDENTIAL_MANAGER_INI import static com.android.internal.util.FrameworkStatsLog.CREDENTIAL_MANAGER_INITIAL_PHASE_REPORTED__API_NAME__API_NAME_UNKNOWN; import static com.android.internal.util.FrameworkStatsLog.CREDENTIAL_MANAGER_INITIAL_PHASE_REPORTED__API_NAME__API_NAME_UNREGISTER_CREDENTIAL_DESCRIPTION; -import android.credentials.ui.RequestInfo; +import android.credentials.selection.RequestInfo; import android.util.Slog; import java.util.AbstractMap; diff --git a/services/credentials/java/com/android/server/credentials/metrics/RequestSessionMetric.java b/services/credentials/java/com/android/server/credentials/metrics/RequestSessionMetric.java index 83b57c4f78c2..8adcfbcb974c 100644 --- a/services/credentials/java/com/android/server/credentials/metrics/RequestSessionMetric.java +++ b/services/credentials/java/com/android/server/credentials/metrics/RequestSessionMetric.java @@ -33,7 +33,7 @@ import android.annotation.NonNull; import android.content.ComponentName; import android.credentials.CreateCredentialRequest; import android.credentials.GetCredentialRequest; -import android.credentials.ui.UserSelectionDialogResult; +import android.credentials.selection.UserSelectionDialogResult; import android.util.Slog; import com.android.server.credentials.MetricUtilities; diff --git a/services/tests/servicestests/src/com/android/server/credentials/ProviderRegistryGetSessionTest.java b/services/tests/servicestests/src/com/android/server/credentials/ProviderRegistryGetSessionTest.java index 6bc0fbf3101c..0f3f27aa2896 100644 --- a/services/tests/servicestests/src/com/android/server/credentials/ProviderRegistryGetSessionTest.java +++ b/services/tests/servicestests/src/com/android/server/credentials/ProviderRegistryGetSessionTest.java @@ -39,8 +39,8 @@ import android.credentials.Credential; import android.credentials.CredentialOption; import android.credentials.GetCredentialException; import android.credentials.GetCredentialResponse; -import android.credentials.ui.GetCredentialProviderData; -import android.credentials.ui.ProviderPendingIntentResponse; +import android.credentials.selection.GetCredentialProviderData; +import android.credentials.selection.ProviderPendingIntentResponse; import android.net.Uri; import android.os.Bundle; import android.service.credentials.CallingAppInfo; |