Loading core/java/android/service/autofill/FillResponse.java +14 −2 Original line number Diff line number Diff line Loading @@ -137,6 +137,7 @@ public final class FillResponse implements Parcelable { private final @Nullable RemoteViews mPresentation; private final @Nullable IntentSender mAuthentication; private final @Nullable AutofillId[] mAuthenticationIds; private final @Nullable AutofillId[] mIgnoredIds; private FillResponse(@NonNull Builder builder) { mDatasets = builder.mDatasets; Loading @@ -145,6 +146,7 @@ public final class FillResponse implements Parcelable { mPresentation = builder.mPresentation; mAuthentication = builder.mAuthentication; mAuthenticationIds = builder.mAuthenticationIds; mIgnoredIds = builder.mIgnoredIds; } /** @hide */ Loading Loading @@ -177,6 +179,11 @@ public final class FillResponse implements Parcelable { return mAuthenticationIds; } /** @hide */ public @Nullable AutofillId[] getIgnoredIds() { return mIgnoredIds; } /** * Builder for {@link FillResponse} objects. You must to provide at least * one dataset or set an authentication intent with a presentation view. Loading @@ -188,6 +195,7 @@ public final class FillResponse implements Parcelable { private RemoteViews mPresentation; private IntentSender mAuthentication; private AutofillId[] mAuthenticationIds; private AutofillId[] mIgnoredIds; private boolean mDestroyed; /** Loading Loading @@ -265,7 +273,7 @@ public final class FillResponse implements Parcelable { * {@code EditText} representing a captcha. */ public Builder setIgnoredIds(AutofillId...ids) { // TODO: implement mIgnoredIds = ids; return this; } Loading Loading @@ -374,6 +382,8 @@ public final class FillResponse implements Parcelable { .append(", hasAuthentication=").append(mAuthentication != null) .append(", authenticationSize=").append(mAuthenticationIds != null ? mAuthenticationIds.length : "N/A") .append(", ignoredIdsSize=").append(mIgnoredIds != null ? mIgnoredIds.length : "N/A") .toString(); } Loading @@ -394,6 +404,7 @@ public final class FillResponse implements Parcelable { parcel.writeParcelableArray(mAuthenticationIds, flags); parcel.writeParcelable(mAuthentication, flags); parcel.writeParcelable(mPresentation, flags); parcel.writeParcelableArray(mIgnoredIds, flags); } public static final Parcelable.Creator<FillResponse> CREATOR = Loading @@ -410,9 +421,10 @@ public final class FillResponse implements Parcelable { builder.addDataset(datasets.get(i)); } builder.setSaveInfo(parcel.readParcelable(null)); builder.setExtras(parcel.readParcelable(null)); builder.setClientState(parcel.readParcelable(null)); builder.setAuthentication(parcel.readParcelableArray(null, AutofillId.class), parcel.readParcelable(null), parcel.readParcelable(null)); builder.setIgnoredIds(parcel.readParcelableArray(null, AutofillId.class)); return builder.build(); } Loading services/autofill/java/com/android/server/autofill/Session.java +25 −1 Original line number Diff line number Diff line Loading @@ -68,6 +68,7 @@ import com.android.server.autofill.ui.AutoFillUI; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Map; import java.util.Map.Entry; Loading Loading @@ -602,7 +603,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState final int lastResponseIdx = getLastResponseIndex(); final int requestId = mResponses.keyAt(lastResponseIdx); final FillContext fillContext = new FillContext(requestId, mStructure); final ArrayList fillContexts = new ArrayList(1); final ArrayList<FillContext> fillContexts = new ArrayList<>(1); fillContexts.add(fillContext); final SaveRequest saveRequest = new SaveRequest(fillContexts, mClientState); Loading @@ -620,6 +621,12 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState viewState = new ViewState(this, id, value, this, ViewState.STATE_INITIAL); mViewStates.put(id, viewState); } else if (mStructure != null && (flags & FLAG_VIEW_ENTERED) != 0) { if (isIgnoredLocked(id)) { if (DEBUG) { Slog.d(TAG, "Not starting partition for ignored view id " + id); } return; } viewState = startPartitionLocked(id, value); } else { if (VERBOSE) Slog.v(TAG, "Ignored " + getFlagAsString(flags) + " for " + id); Loading Loading @@ -931,6 +938,23 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } } private boolean isIgnoredLocked(@NonNull AutofillId id) { if (mResponses == null) return false; for (int i = mResponses.size() - 1; i >= 0; i--) { final FillResponse response = mResponses.valueAt(i); final AutofillId[] ignoredIds = response.getIgnoredIds(); if (ignoredIds == null) continue; for (int j = 0; j < ignoredIds.length; j++) { final AutofillId ignoredId = ignoredIds[j]; if (ignoredId != null && ignoredId.equals(id)) { return true; } } } return false; } void dumpLocked(String prefix, PrintWriter pw) { pw.print(prefix); pw.print("id: "); pw.println(id); pw.print(prefix); pw.print("uid: "); pw.println(uid); Loading Loading
core/java/android/service/autofill/FillResponse.java +14 −2 Original line number Diff line number Diff line Loading @@ -137,6 +137,7 @@ public final class FillResponse implements Parcelable { private final @Nullable RemoteViews mPresentation; private final @Nullable IntentSender mAuthentication; private final @Nullable AutofillId[] mAuthenticationIds; private final @Nullable AutofillId[] mIgnoredIds; private FillResponse(@NonNull Builder builder) { mDatasets = builder.mDatasets; Loading @@ -145,6 +146,7 @@ public final class FillResponse implements Parcelable { mPresentation = builder.mPresentation; mAuthentication = builder.mAuthentication; mAuthenticationIds = builder.mAuthenticationIds; mIgnoredIds = builder.mIgnoredIds; } /** @hide */ Loading Loading @@ -177,6 +179,11 @@ public final class FillResponse implements Parcelable { return mAuthenticationIds; } /** @hide */ public @Nullable AutofillId[] getIgnoredIds() { return mIgnoredIds; } /** * Builder for {@link FillResponse} objects. You must to provide at least * one dataset or set an authentication intent with a presentation view. Loading @@ -188,6 +195,7 @@ public final class FillResponse implements Parcelable { private RemoteViews mPresentation; private IntentSender mAuthentication; private AutofillId[] mAuthenticationIds; private AutofillId[] mIgnoredIds; private boolean mDestroyed; /** Loading Loading @@ -265,7 +273,7 @@ public final class FillResponse implements Parcelable { * {@code EditText} representing a captcha. */ public Builder setIgnoredIds(AutofillId...ids) { // TODO: implement mIgnoredIds = ids; return this; } Loading Loading @@ -374,6 +382,8 @@ public final class FillResponse implements Parcelable { .append(", hasAuthentication=").append(mAuthentication != null) .append(", authenticationSize=").append(mAuthenticationIds != null ? mAuthenticationIds.length : "N/A") .append(", ignoredIdsSize=").append(mIgnoredIds != null ? mIgnoredIds.length : "N/A") .toString(); } Loading @@ -394,6 +404,7 @@ public final class FillResponse implements Parcelable { parcel.writeParcelableArray(mAuthenticationIds, flags); parcel.writeParcelable(mAuthentication, flags); parcel.writeParcelable(mPresentation, flags); parcel.writeParcelableArray(mIgnoredIds, flags); } public static final Parcelable.Creator<FillResponse> CREATOR = Loading @@ -410,9 +421,10 @@ public final class FillResponse implements Parcelable { builder.addDataset(datasets.get(i)); } builder.setSaveInfo(parcel.readParcelable(null)); builder.setExtras(parcel.readParcelable(null)); builder.setClientState(parcel.readParcelable(null)); builder.setAuthentication(parcel.readParcelableArray(null, AutofillId.class), parcel.readParcelable(null), parcel.readParcelable(null)); builder.setIgnoredIds(parcel.readParcelableArray(null, AutofillId.class)); return builder.build(); } Loading
services/autofill/java/com/android/server/autofill/Session.java +25 −1 Original line number Diff line number Diff line Loading @@ -68,6 +68,7 @@ import com.android.server.autofill.ui.AutoFillUI; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Map; import java.util.Map.Entry; Loading Loading @@ -602,7 +603,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState final int lastResponseIdx = getLastResponseIndex(); final int requestId = mResponses.keyAt(lastResponseIdx); final FillContext fillContext = new FillContext(requestId, mStructure); final ArrayList fillContexts = new ArrayList(1); final ArrayList<FillContext> fillContexts = new ArrayList<>(1); fillContexts.add(fillContext); final SaveRequest saveRequest = new SaveRequest(fillContexts, mClientState); Loading @@ -620,6 +621,12 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState viewState = new ViewState(this, id, value, this, ViewState.STATE_INITIAL); mViewStates.put(id, viewState); } else if (mStructure != null && (flags & FLAG_VIEW_ENTERED) != 0) { if (isIgnoredLocked(id)) { if (DEBUG) { Slog.d(TAG, "Not starting partition for ignored view id " + id); } return; } viewState = startPartitionLocked(id, value); } else { if (VERBOSE) Slog.v(TAG, "Ignored " + getFlagAsString(flags) + " for " + id); Loading Loading @@ -931,6 +938,23 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } } private boolean isIgnoredLocked(@NonNull AutofillId id) { if (mResponses == null) return false; for (int i = mResponses.size() - 1; i >= 0; i--) { final FillResponse response = mResponses.valueAt(i); final AutofillId[] ignoredIds = response.getIgnoredIds(); if (ignoredIds == null) continue; for (int j = 0; j < ignoredIds.length; j++) { final AutofillId ignoredId = ignoredIds[j]; if (ignoredId != null && ignoredId.equals(id)) { return true; } } } return false; } void dumpLocked(String prefix, PrintWriter pw) { pw.print(prefix); pw.print("id: "); pw.println(id); pw.print(prefix); pw.print("uid: "); pw.println(uid); Loading