diff options
| author | 2017-04-21 06:06:49 +0000 | |
|---|---|---|
| committer | 2017-04-21 06:06:53 +0000 | |
| commit | ab8238e23316cbb6f7f2ff2da44c172960057388 (patch) | |
| tree | 0afb9d8aa211326bce3fa5f7637b8386b38a06c1 | |
| parent | 5cb3d6bea314aaff5b42c356a832ba7f854b91eb (diff) | |
| parent | 6d24c30d8d78faa2e10b01fb29a88a4ed6de401d (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.java | 48 |
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. */ |