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

Commit 121e5264 authored by Philip P. Moltmann's avatar Philip P. Moltmann
Browse files

Return all previous FillContexts onFill

Test: CtsAutoFillServiceTestCases
Fixes: 37673341
Change-Id: I80feb5bd8d6027fb4ec2dd32f5c486dae7c6bc4c
parent c7619632
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -37084,9 +37084,9 @@ package android.service.autofill {
  public final class FillRequest implements android.os.Parcelable {
    method public int describeContents();
    method public android.os.Bundle getClientState();
    method public java.util.ArrayList<android.service.autofill.FillContext> getFillContexts();
    method public int getFlags();
    method public int getId();
    method public android.app.assist.AssistStructure getStructure();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.service.autofill.FillRequest> CREATOR;
    field public static final int FLAG_MANUAL_REQUEST = 1; // 0x1
+1 −1
Original line number Diff line number Diff line
@@ -40199,9 +40199,9 @@ package android.service.autofill {
  public final class FillRequest implements android.os.Parcelable {
    method public int describeContents();
    method public android.os.Bundle getClientState();
    method public java.util.ArrayList<android.service.autofill.FillContext> getFillContexts();
    method public int getFlags();
    method public int getId();
    method public android.app.assist.AssistStructure getStructure();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.service.autofill.FillRequest> CREATOR;
    field public static final int FLAG_MANUAL_REQUEST = 1; // 0x1
+1 −1
Original line number Diff line number Diff line
@@ -37238,9 +37238,9 @@ package android.service.autofill {
  public final class FillRequest implements android.os.Parcelable {
    method public int describeContents();
    method public android.os.Bundle getClientState();
    method public java.util.ArrayList<android.service.autofill.FillContext> getFillContexts();
    method public int getFlags();
    method public int getId();
    method public android.app.assist.AssistStructure getStructure();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.service.autofill.FillRequest> CREATOR;
    field public static final int FLAG_MANUAL_REQUEST = 1; // 0x1
+5 −2
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import android.view.autofill.AutofillManager;

import com.android.internal.os.SomeArgs;

import java.util.ArrayList;
import java.util.List;

/**
@@ -118,8 +119,10 @@ public abstract class AutofillService extends Service {
                try {
                    onFillRequest(request, cancellation, fillCallback);
                } catch (AbstractMethodError e) {
                    onFillRequest(request.getStructure(), request.getClientState(),
                            request.getFlags(), cancellation, fillCallback);
                    final ArrayList<FillContext> contexts = request.getFillContexts();
                    onFillRequest(contexts.get(contexts.size() - 1).getStructure(),
                            request.getClientState(), request.getFlags(), cancellation,
                            fillCallback);
                }
                break;
            } case MSG_ON_SAVE_REQUEST: {
+12 −10
Original line number Diff line number Diff line
@@ -19,16 +19,16 @@ package android.service.autofill;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.assist.AssistStructure;
import android.os.Bundle;
import android.os.CancellationSignal;
import android.os.Parcel;
import android.os.Parcelable;

import com.android.internal.util.Preconditions;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.ArrayList;

/**
 * This class represents a request to an {@link AutofillService autofill provider}
@@ -56,22 +56,24 @@ public final class FillRequest implements Parcelable {

    private final int mId;
    private final @RequestFlags int mFlags;
    private final @NonNull AssistStructure mStructure;
    private final @NonNull ArrayList<FillContext> mContexts;
    private final @Nullable Bundle mClientState;

    private FillRequest(@NonNull Parcel parcel) {
        mId = parcel.readInt();
        mStructure = parcel.readParcelable(null);
        mContexts = new ArrayList<>();
        parcel.readParcelableList(mContexts, null);

        mClientState = parcel.readBundle();
        mFlags = parcel.readInt();
    }

    /** @hide */
    public FillRequest(int id, @NonNull AssistStructure structure,
    public FillRequest(int id, @NonNull ArrayList<FillContext> contexts,
            @Nullable Bundle clientState, @RequestFlags int flags) {
        mId = id;
        mFlags = Preconditions.checkFlagsArgument(flags, FLAG_MANUAL_REQUEST);
        mStructure = Preconditions.checkNotNull(structure, "structure");
        mContexts = Preconditions.checkCollectionElementsNotNull(contexts, "contexts");
        mClientState = clientState;
    }

@@ -92,10 +94,10 @@ public final class FillRequest implements Parcelable {
    }

    /**
     * @return The structure capturing the UI state.
     * @return The contexts associated with each previous fill request.
     */
    public @NonNull AssistStructure getStructure() {
        return mStructure;
    public @NonNull ArrayList<FillContext> getFillContexts() {
        return mContexts;
    }

    /**
@@ -120,7 +122,7 @@ public final class FillRequest implements Parcelable {
    @Override
    public void writeToParcel(Parcel parcel, int flags) {
        parcel.writeInt(mId);
        parcel.writeParcelable(mStructure, flags);
        parcel.writeParcelableList(mContexts, flags);
        parcel.writeBundle(mClientState);
        parcel.writeInt(mFlags);
    }
Loading