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

Commit 0e952656 authored by Reema Bajwa's avatar Reema Bajwa
Browse files

Bring up credMan bottom sheet from pinned entry

Bug:299344842
Test: Built & deployed locally

Change-Id: I548da4c14a6dfc965497867e38263f6afbb04c00
parent 2d1d2cce
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ import android.os.OutcomeReceiver;
import android.os.RemoteException;
import android.provider.DeviceConfig;
import android.util.Log;
import android.view.autofill.IAutoFillManagerClient;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -135,7 +136,8 @@ public final class CredentialManager {
            @Nullable CancellationSignal cancellationSignal,
            @CallbackExecutor @NonNull Executor executor,
            @NonNull OutcomeReceiver<GetCandidateCredentialsResponse,
                    GetCandidateCredentialsException> callback
                    GetCandidateCredentialsException> callback,
            @NonNull IAutoFillManagerClient clientCallback
    ) {
        requireNonNull(request, "request must not be null");
        requireNonNull(callingPackage, "callingPackage must not be null");
@@ -153,6 +155,7 @@ public final class CredentialManager {
                    mService.getCandidateCredentials(
                            request,
                            new GetCandidateCredentialsTransport(executor, callback),
                            clientCallback,
                            callingPackage);
        } catch (RemoteException e) {
            e.rethrowFromSystemServer();
+44 −3
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.credentials;

import android.annotation.Hide;
import android.annotation.NonNull;
import android.app.PendingIntent;
import android.credentials.ui.GetCredentialProviderData;
import android.os.Parcel;
import android.os.Parcelable;
@@ -35,22 +36,39 @@ import java.util.List;
 */
@Hide
public final class GetCandidateCredentialsResponse implements Parcelable {
    // TODO(b/299321990): Add members

    @NonNull
    private final List<GetCredentialProviderData> mCandidateProviderDataList;

    private final PendingIntent mPendingIntent;

    private final GetCredentialResponse mGetCredentialResponse;

    /**
     * @hide
     */
    @Hide
    public GetCandidateCredentialsResponse(
            List<GetCredentialProviderData> candidateProviderDataList
            GetCredentialResponse getCredentialResponse
    ) {
        mCandidateProviderDataList = null;
        mPendingIntent = null;
        mGetCredentialResponse = getCredentialResponse;
    }

    /**
     * @hide
     */
    @Hide
    public GetCandidateCredentialsResponse(
            List<GetCredentialProviderData> candidateProviderDataList,
            PendingIntent pendingIntent
    ) {
        Preconditions.checkCollectionNotEmpty(
                candidateProviderDataList,
                /*valueName=*/ "candidateProviderDataList");
        mCandidateProviderDataList = new ArrayList<>(candidateProviderDataList);
        mPendingIntent = pendingIntent;
        mGetCredentialResponse = null;
    }

    /**
@@ -62,17 +80,40 @@ public final class GetCandidateCredentialsResponse implements Parcelable {
        return mCandidateProviderDataList;
    }

    /**
     * Returns candidate provider data list.
     *
     * @hide
     */
    public GetCredentialResponse getGetCredentialResponse() {
        return mGetCredentialResponse;
    }

    /**
     * Returns candidate provider data list.
     *
     * @hide
     */
    public PendingIntent getPendingIntent() {
        return mPendingIntent;
    }

    protected GetCandidateCredentialsResponse(Parcel in) {
        List<GetCredentialProviderData> candidateProviderDataList = new ArrayList<>();
        in.readTypedList(candidateProviderDataList, GetCredentialProviderData.CREATOR);
        mCandidateProviderDataList = candidateProviderDataList;

        AnnotationValidations.validate(NonNull.class, null, mCandidateProviderDataList);

        mPendingIntent = in.readTypedObject(PendingIntent.CREATOR);
        mGetCredentialResponse = in.readTypedObject(GetCredentialResponse.CREATOR);
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeTypedList(mCandidateProviderDataList);
        dest.writeTypedObject(mPendingIntent, flags);
        dest.writeTypedObject(mGetCredentialResponse, flags);
    }

    @Override
+2 −1
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.credentials.CredentialProviderInfo;
import android.credentials.ClearCredentialStateRequest;
import android.credentials.CreateCredentialRequest;
import android.credentials.GetCandidateCredentialsRequest;
import android.view.autofill.IAutoFillManagerClient;
import android.credentials.GetCredentialRequest;
import android.credentials.RegisterCredentialDescriptionRequest;
import android.credentials.UnregisterCredentialDescriptionRequest;
@@ -47,7 +48,7 @@ interface ICredentialManager {

    @nullable ICancellationSignal executeCreateCredential(in CreateCredentialRequest request, in ICreateCredentialCallback callback, String callingPackage);

    @nullable ICancellationSignal getCandidateCredentials(in GetCredentialRequest request, in IGetCandidateCredentialsCallback callback, String callingPackage);
    @nullable ICancellationSignal getCandidateCredentials(in GetCredentialRequest request, in IGetCandidateCredentialsCallback callback, in IAutoFillManagerClient clientCallback, String callingPackage);

    @nullable ICancellationSignal clearCredentialState(in ClearCredentialStateRequest request, in IClearCredentialStateCallback callback, String callingPackage);

+27 −0
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ import android.view.ViewStructure;
import android.view.autofill.AutofillId;
import android.view.autofill.AutofillManager;
import android.view.autofill.AutofillValue;
import android.view.autofill.IAutoFillManagerClient;

import com.android.internal.os.IResultReceiver;

@@ -621,6 +622,23 @@ public abstract class AutofillService extends Service {
                    new FillCallback(callback, request.getId())));
        }


        @Override
        public void onFillCredentialRequest(FillRequest request, IFillCallback callback,
                IAutoFillManagerClient autofillClientCallback) {
            ICancellationSignal transport = CancellationSignal.createTransport();
            try {
                callback.onCancellable(transport);
            } catch (RemoteException e) {
                e.rethrowFromSystemServer();
            }
            mHandler.sendMessage(obtainMessage(
                    AutofillService::onFillCredentialRequest,
                    AutofillService.this, request, CancellationSignal.fromTransport(transport),
                    new FillCallback(callback, request.getId()),
                    autofillClientCallback));
        }

        @Override
        public void onSaveRequest(SaveRequest request, ISaveCallback callback) {
            mHandler.sendMessage(obtainMessage(
@@ -682,6 +700,15 @@ public abstract class AutofillService extends Service {
    public abstract void onFillRequest(@NonNull FillRequest request,
            @NonNull CancellationSignal cancellationSignal, @NonNull FillCallback callback);

    /**
     * Variant of onFillRequest for internal credential manager proxy autofill service only.
     *
     * @hide
     */
    public void onFillCredentialRequest(@NonNull FillRequest request,
            @NonNull CancellationSignal cancellationSignal, @NonNull FillCallback callback,
            IAutoFillManagerClient autofillClientCallback) {}

    /**
     * Called when the user requests the service to save the contents of a screen.
     *
+3 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.service.autofill.FillRequest;
import android.service.autofill.IFillCallback;
import android.service.autofill.ISaveCallback;
import android.service.autofill.SaveRequest;
import android.view.autofill.IAutoFillManagerClient;
import com.android.internal.os.IResultReceiver;

/**
@@ -30,6 +31,8 @@ import com.android.internal.os.IResultReceiver;
oneway interface IAutoFillService {
    void onConnectedStateChanged(boolean connected);
    void onFillRequest(in FillRequest request, in IFillCallback callback);
    void onFillCredentialRequest(in FillRequest request, in IFillCallback callback,
    in IAutoFillManagerClient client);
    void onSaveRequest(in SaveRequest request, in ISaveCallback callback);
    void onSavedPasswordCountRequest(in IResultReceiver receiver);
}
Loading