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

Commit 97e2b2a6 authored by Adam He's avatar Adam He Committed by Android (Google) Code Review
Browse files

Merge "Add support for app specific field classification."

parents c785a075 2cc31467
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -40467,6 +40467,7 @@ package android.service.autofill {
    method public android.service.autofill.FillResponse.Builder setHeader(android.widget.RemoteViews);
    method public android.service.autofill.FillResponse.Builder setIgnoredIds(android.view.autofill.AutofillId...);
    method public android.service.autofill.FillResponse.Builder setSaveInfo(android.service.autofill.SaveInfo);
    method public android.service.autofill.FillResponse.Builder setUserData(android.service.autofill.UserData);
  }
  public final class ImageTransformation implements android.os.Parcelable android.service.autofill.Transformation {
+1 −1
Original line number Diff line number Diff line
@@ -175,7 +175,7 @@ public abstract class AutofillFieldClassificationService extends Service {
    public float[][] onGetScores(@Nullable String algorithm,
            @Nullable Bundle algorithmOptions, @NonNull List<AutofillValue> actualValues,
            @NonNull List<String> userDataValues) {
        Log.e(TAG, "service implementation (" + getClass() + " does not implement onGetScore()");
        Log.e(TAG, "service implementation (" + getClass() + " does not implement onGetScores()");
        return null;
    }

+31 −0
Original line number Diff line number Diff line
@@ -84,6 +84,7 @@ public final class FillResponse implements Parcelable {
    private final @Nullable AutofillId[] mFieldClassificationIds;
    private final int mFlags;
    private int mRequestId;
    private final @Nullable UserData mUserData;

    private FillResponse(@NonNull Builder builder) {
        mDatasets = (builder.mDatasets != null) ? new ParceledListSlice<>(builder.mDatasets) : null;
@@ -99,6 +100,7 @@ public final class FillResponse implements Parcelable {
        mFieldClassificationIds = builder.mFieldClassificationIds;
        mFlags = builder.mFlags;
        mRequestId = INVALID_REQUEST_ID;
        mUserData = builder.mUserData;
    }

    /** @hide */
@@ -156,6 +158,11 @@ public final class FillResponse implements Parcelable {
        return mFieldClassificationIds;
    }

    /** @hide */
    public @Nullable UserData getUserData() {
        return mUserData;
    }

    /** @hide */
    @TestApi
    public int getFlags() {
@@ -198,6 +205,7 @@ public final class FillResponse implements Parcelable {
        private AutofillId[] mFieldClassificationIds;
        private int mFlags;
        private boolean mDestroyed;
        private UserData mUserData;

        /**
         * Triggers a custom UI before before autofilling the screen with any data set in this
@@ -505,6 +513,21 @@ public final class FillResponse implements Parcelable {
            return this;
        }

        /**
         * Sets a specific {@link UserData} for field classification for this request only.
         *
         * @return this builder
         * @throws IllegalStateException if the FillResponse
         * {@link #setAuthentication(AutofillId[], IntentSender, RemoteViews)
         * requires authentication}.
         */
        public Builder setUserData(@NonNull UserData userData) {
            throwIfDestroyed();
            throwIfAuthenticationCalled();
            mUserData = Preconditions.checkNotNull(userData);
            return this;
        }

        /**
         * Builds a new {@link FillResponse} instance.
         *
@@ -599,6 +622,9 @@ public final class FillResponse implements Parcelable {
        if (mFieldClassificationIds != null) {
            builder.append(Arrays.toString(mFieldClassificationIds));
        }
        if (mUserData != null) {
            builder.append(", userData=").append(mUserData);
        }
        return builder.append("]").toString();
    }

@@ -621,6 +647,7 @@ public final class FillResponse implements Parcelable {
        parcel.writeParcelable(mPresentation, flags);
        parcel.writeParcelable(mHeader, flags);
        parcel.writeParcelable(mFooter, flags);
        parcel.writeParcelable(mUserData, flags);
        parcel.writeParcelableArray(mIgnoredIds, flags);
        parcel.writeLong(mDisableDuration);
        parcel.writeParcelableArray(mFieldClassificationIds, flags);
@@ -661,6 +688,10 @@ public final class FillResponse implements Parcelable {
            if (footer != null) {
                builder.setFooter(footer);
            }
            final UserData userData = parcel.readParcelable(null);
            if (userData != null) {
                builder.setUserData(userData);
            }

            builder.setIgnoredIds(parcel.readParcelableArray(null, AutofillId.class));
            final long disableDuration = parcel.readLong();
+9 −1
Original line number Diff line number Diff line
@@ -1238,7 +1238,15 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
            return;
        }

        final UserData userData = mService.getUserData();
        final UserData packageUserData = lastResponse.getUserData();

        final UserData userData;
        if (packageUserData != null) {
            // Replace default userData
            userData = packageUserData;
        } else {
            userData = mService.getUserData();
        }

        for (int i = 0; i < mViewStates.size(); i++) {
            final ViewState viewState = mViewStates.valueAt(i);