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

Commit 031dd588 authored by Reema Bajwa's avatar Reema Bajwa Committed by Android (Google) Code Review
Browse files

Merge "Bring up credMan bottom sheet from pinned entry" into main

parents b255e388 0e952656
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