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

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

Merge "Require an app activity for launching UIs."

parents e02d3f03 d4984fab
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -13018,8 +13018,8 @@ package android.credentials {
  public final class CredentialManager {
    method public void clearCredentialState(@NonNull android.credentials.ClearCredentialStateRequest, @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Void,android.credentials.CredentialManagerException>);
    method public void executeCreateCredential(@NonNull android.credentials.CreateCredentialRequest, @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<android.credentials.CreateCredentialResponse,android.credentials.CredentialManagerException>);
    method public void executeGetCredential(@NonNull android.credentials.GetCredentialRequest, @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<android.credentials.GetCredentialResponse,android.credentials.CredentialManagerException>);
    method public void executeCreateCredential(@NonNull android.credentials.CreateCredentialRequest, @NonNull android.app.Activity, @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<android.credentials.CreateCredentialResponse,android.credentials.CredentialManagerException>);
    method public void executeGetCredential(@NonNull android.credentials.GetCredentialRequest, @NonNull android.app.Activity, @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<android.credentials.GetCredentialResponse,android.credentials.CredentialManagerException>);
  }
  public class CredentialManagerException extends java.lang.Exception {
+17 −12
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.annotation.CallbackExecutor;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemService;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.Context;
import android.content.IntentSender;
@@ -65,17 +66,20 @@ public final class CredentialManager {
     * credential, display a picker when multiple credentials exist, etc.
     *
     * @param request the request specifying type(s) of credentials to get from the user
     * @param activity the activity used to launch any UI needed
     * @param cancellationSignal an optional signal that allows for cancelling this call
     * @param executor the callback will take place on this {@link Executor}
     * @param callback the callback invoked when the request succeeds or fails
     */
    public void executeGetCredential(
            @NonNull GetCredentialRequest request,
            @NonNull Activity activity,
            @Nullable CancellationSignal cancellationSignal,
            @CallbackExecutor @NonNull Executor executor,
            @NonNull OutcomeReceiver<
                    GetCredentialResponse, CredentialManagerException> callback) {
        requireNonNull(request, "request must not be null");
        requireNonNull(activity, "activity must not be null");
        requireNonNull(executor, "executor must not be null");
        requireNonNull(callback, "callback must not be null");

@@ -88,8 +92,7 @@ public final class CredentialManager {
        try {
            cancelRemote = mService.executeGetCredential(
                    request,
                    // TODO: use a real activity instead of context.
                    new GetCredentialTransport(mContext, executor, callback),
                    new GetCredentialTransport(activity, executor, callback),
                    mContext.getOpPackageName());
        } catch (RemoteException e) {
            e.rethrowFromSystemServer();
@@ -107,17 +110,20 @@ public final class CredentialManager {
     * or storing the new credential, etc.
     *
     * @param request the request specifying type(s) of credentials to get from the user
     * @param activity the activity used to launch any UI needed
     * @param cancellationSignal an optional signal that allows for cancelling this call
     * @param executor the callback will take place on this {@link Executor}
     * @param callback the callback invoked when the request succeeds or fails
     */
    public void executeCreateCredential(
            @NonNull CreateCredentialRequest request,
            @NonNull Activity activity,
            @Nullable CancellationSignal cancellationSignal,
            @CallbackExecutor @NonNull Executor executor,
            @NonNull OutcomeReceiver<
                    CreateCredentialResponse, CredentialManagerException> callback) {
        requireNonNull(request, "request must not be null");
        requireNonNull(activity, "activity must not be null");
        requireNonNull(executor, "executor must not be null");
        requireNonNull(callback, "callback must not be null");

@@ -129,8 +135,7 @@ public final class CredentialManager {
        ICancellationSignal cancelRemote = null;
        try {
            cancelRemote = mService.executeCreateCredential(request,
                    // TODO: use a real activity instead of context.
                    new CreateCredentialTransport(mContext, executor, callback),
                    new CreateCredentialTransport(activity, executor, callback),
                    mContext.getOpPackageName());
        } catch (RemoteException e) {
            e.rethrowFromSystemServer();
@@ -188,14 +193,14 @@ public final class CredentialManager {
    private static class GetCredentialTransport extends IGetCredentialCallback.Stub {
        // TODO: listen for cancellation to release callback.

        private final Context mActivityContext;
        private final Activity mActivity;
        private final Executor mExecutor;
        private final OutcomeReceiver<
                GetCredentialResponse, CredentialManagerException> mCallback;

        private GetCredentialTransport(Context activityContext, Executor executor,
        private GetCredentialTransport(Activity activity, Executor executor,
                OutcomeReceiver<GetCredentialResponse, CredentialManagerException> callback) {
            mActivityContext = activityContext;
            mActivity = activity;
            mExecutor = executor;
            mCallback = callback;
        }
@@ -203,7 +208,7 @@ public final class CredentialManager {
        @Override
        public void onPendingIntent(PendingIntent pendingIntent) {
            try {
                mActivityContext.startIntentSender(pendingIntent.getIntentSender(), null, 0, 0, 0);
                mActivity.startIntentSender(pendingIntent.getIntentSender(), null, 0, 0, 0);
            } catch (IntentSender.SendIntentException e) {
                Log.e(TAG, "startIntentSender() failed for intent:"
                        + pendingIntent.getIntentSender(), e);
@@ -226,14 +231,14 @@ public final class CredentialManager {
    private static class CreateCredentialTransport extends ICreateCredentialCallback.Stub {
        // TODO: listen for cancellation to release callback.

        private final Context mActivityContext;
        private final Activity mActivity;
        private final Executor mExecutor;
        private final OutcomeReceiver<
                CreateCredentialResponse, CredentialManagerException> mCallback;

        private CreateCredentialTransport(Context activityContext, Executor executor,
        private CreateCredentialTransport(Activity activity, Executor executor,
                OutcomeReceiver<CreateCredentialResponse, CredentialManagerException> callback) {
            mActivityContext = activityContext;
            mActivity = activity;
            mExecutor = executor;
            mCallback = callback;
        }
@@ -241,7 +246,7 @@ public final class CredentialManager {
        @Override
        public void onPendingIntent(PendingIntent pendingIntent) {
            try {
                mActivityContext.startIntentSender(pendingIntent.getIntentSender(), null, 0, 0, 0);
                mActivity.startIntentSender(pendingIntent.getIntentSender(), null, 0, 0, 0);
            } catch (IntentSender.SendIntentException e) {
                Log.e(TAG, "startIntentSender() failed for intent:"
                        + pendingIntent.getIntentSender(), e);