summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2017-04-21 06:06:49 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2017-04-21 06:06:53 +0000
commitab8238e23316cbb6f7f2ff2da44c172960057388 (patch)
tree0afb9d8aa211326bce3fa5f7637b8386b38a06c1
parent5cb3d6bea314aaff5b42c356a832ba7f854b91eb (diff)
parent6d24c30d8d78faa2e10b01fb29a88a4ed6de401d (diff)
Merge "Don't trigger new partition on fields from SaveInfo" into oc-dev
-rw-r--r--services/autofill/java/com/android/server/autofill/Session.java48
1 files changed, 34 insertions, 14 deletions
diff --git a/services/autofill/java/com/android/server/autofill/Session.java b/services/autofill/java/com/android/server/autofill/Session.java
index 7478fffce877..4bc3872f4ff0 100644
--- a/services/autofill/java/com/android/server/autofill/Session.java
+++ b/services/autofill/java/com/android/server/autofill/Session.java
@@ -846,6 +846,21 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
setViewStatesLocked(response, dataset, state);
}
}
+ final SaveInfo saveInfo = response.getSaveInfo();
+ if (saveInfo != null) {
+ final AutofillId[] requiredIds = saveInfo.getRequiredIds();
+ for (int i = 0; i < requiredIds.length; i++) {
+ final AutofillId id = requiredIds[i];
+ createOrUpdateViewStateLocked(id, state, null);
+ }
+ final AutofillId[] optionalIds = saveInfo.getOptionalIds();
+ if (optionalIds != null) {
+ for (int i = 0; i < optionalIds.length; i++) {
+ final AutofillId id = optionalIds[i];
+ createOrUpdateViewStateLocked(id, state, null);
+ }
+ }
+ }
}
/**
@@ -857,26 +872,31 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
final ArrayList<AutofillValue> values = dataset.getFieldValues();
for (int j = 0; j < ids.size(); j++) {
final AutofillId id = ids.get(j);
- ViewState viewState = mViewStates.get(id);
- if (viewState != null) {
- viewState.setState(state);
- } else {
- viewState = new ViewState(this, id, null, this, state);
- if (DEBUG) { // TODO(b/33197203): change to VERBOSE once stable
- Slog.d(TAG, "Adding autofillable view with id " + id + " and state " + state);
- }
- mViewStates.put(id, viewState);
- }
- if ((state & ViewState.STATE_AUTOFILLED) != 0) {
- viewState.setAutofilledValue(values.get(j));
- }
-
+ final AutofillValue value = values.get(j);
+ final ViewState viewState = createOrUpdateViewStateLocked(id, state, value);
if (response != null) {
viewState.setResponse(response);
}
}
}
+ private ViewState createOrUpdateViewStateLocked(AutofillId id, int state,AutofillValue value) {
+ ViewState viewState = mViewStates.get(id);
+ if (viewState != null) {
+ viewState.setState(state);
+ } else {
+ viewState = new ViewState(this, id, null, this, state);
+ if (DEBUG) { // TODO(b/33197203): change to VERBOSE once stable
+ Slog.d(TAG, "Adding autofillable view with id " + id + " and state " + state);
+ }
+ mViewStates.put(id, viewState);
+ }
+ if ((state & ViewState.STATE_AUTOFILLED) != 0) {
+ viewState.setAutofilledValue(value);
+ }
+ return viewState;
+ }
+
/**
* Resets the given state from all existing views in the given dataset.
*/