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 Original line 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 setHeader(android.widget.RemoteViews);
    method public android.service.autofill.FillResponse.Builder setIgnoredIds(android.view.autofill.AutofillId...);
    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 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 {
  public final class ImageTransformation implements android.os.Parcelable android.service.autofill.Transformation {
+1 −1
Original line number Original line Diff line number Diff line
@@ -175,7 +175,7 @@ public abstract class AutofillFieldClassificationService extends Service {
    public float[][] onGetScores(@Nullable String algorithm,
    public float[][] onGetScores(@Nullable String algorithm,
            @Nullable Bundle algorithmOptions, @NonNull List<AutofillValue> actualValues,
            @Nullable Bundle algorithmOptions, @NonNull List<AutofillValue> actualValues,
            @NonNull List<String> userDataValues) {
            @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;
        return null;
    }
    }


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


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


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


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

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


        /**
        /**
         * Triggers a custom UI before before autofilling the screen with any data set in this
         * 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;
            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.
         * Builds a new {@link FillResponse} instance.
         *
         *
@@ -599,6 +622,9 @@ public final class FillResponse implements Parcelable {
        if (mFieldClassificationIds != null) {
        if (mFieldClassificationIds != null) {
            builder.append(Arrays.toString(mFieldClassificationIds));
            builder.append(Arrays.toString(mFieldClassificationIds));
        }
        }
        if (mUserData != null) {
            builder.append(", userData=").append(mUserData);
        }
        return builder.append("]").toString();
        return builder.append("]").toString();
    }
    }


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


            builder.setIgnoredIds(parcel.readParcelableArray(null, AutofillId.class));
            builder.setIgnoredIds(parcel.readParcelableArray(null, AutofillId.class));
            final long disableDuration = parcel.readLong();
            final long disableDuration = parcel.readLong();
+9 −1
Original line number Original line Diff line number Diff line
@@ -1238,7 +1238,15 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
            return;
            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++) {
        for (int i = 0; i < mViewStates.size(); i++) {
            final ViewState viewState = mViewStates.valueAt(i);
            final ViewState viewState = mViewStates.valueAt(i);