summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2020-04-04 04:32:10 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-04-04 04:32:10 +0000
commit48079ba38c4035c316c3b10dc474f61e2c5af17f (patch)
tree0d242ad610d7cb038d1d797c852430f2d151dab1
parentab0a32e6ba6155713fb46cc1d9eff9cd8fb7bc6d (diff)
parent7b5982b6e7252fb0fb3e7d15754e33164b530896 (diff)
Merge changes Id15887ff,I78262baa into rvc-dev
* changes: AF: Clear the existing response for the partition on a new request. AF: Fix bug where Session#setViewStatesLocked doesn't clear response.
-rw-r--r--services/autofill/java/com/android/server/autofill/Session.java18
1 files changed, 13 insertions, 5 deletions
diff --git a/services/autofill/java/com/android/server/autofill/Session.java b/services/autofill/java/com/android/server/autofill/Session.java
index 55a92966eb29..12905696ff98 100644
--- a/services/autofill/java/com/android/server/autofill/Session.java
+++ b/services/autofill/java/com/android/server/autofill/Session.java
@@ -657,13 +657,21 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
}
/**
- * Reads a new structure and then request a new fill response from the fill service.
+ * Clears the existing response for the partition, reads a new structure, and then requests a
+ * new fill response from the fill service.
*
* <p> Also asks the IME to make an inline suggestions request if it's enabled.
*/
@GuardedBy("mLock")
private void requestNewFillResponseLocked(@NonNull ViewState viewState, int newState,
int flags) {
+ final FillResponse existingResponse = viewState.getResponse();
+ if (existingResponse != null) {
+ setViewStatesLocked(
+ existingResponse,
+ ViewState.STATE_INITIAL,
+ /* clearResponse= */ true);
+ }
mExpiredResponse = false;
if (mForAugmentedAutofillOnly || mRemoteFillService == null) {
if (sVerbose) {
@@ -3226,7 +3234,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
}
/**
- * Sets the state of all views in the given dataset and response.
+ * Sets the state and response of all views in the given dataset.
*/
@GuardedBy("mLock")
private void setViewStatesLocked(@Nullable FillResponse response, @NonNull Dataset dataset,
@@ -3241,10 +3249,10 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
if (datasetId != null) {
viewState.setDatasetId(datasetId);
}
- if (response != null) {
- viewState.setResponse(response);
- } else if (clearResponse) {
+ if (clearResponse) {
viewState.setResponse(null);
+ } else if (response != null) {
+ viewState.setResponse(response);
}
}
}