diff options
| author | 2021-04-14 07:45:16 +0000 | |
|---|---|---|
| committer | 2021-04-14 07:45:16 +0000 | |
| commit | f379c17e98f4f0e24ba6b346ddafabed60bee0dd (patch) | |
| tree | 781c36a2d33177bcbc669176098185735f8c19df | |
| parent | 9bf277f90565dd7a4ab4d4ce66a5f3bd1fa62ab9 (diff) | |
| parent | 17e04104d8791666166f8d85d21d2a9fa48674a8 (diff) | |
Merge "Fallback to the default platform password manager" into sc-dev
| -rw-r--r-- | services/autofill/java/com/android/server/autofill/Session.java | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/services/autofill/java/com/android/server/autofill/Session.java b/services/autofill/java/com/android/server/autofill/Session.java index a230f808ee9e..f8b770b4ec84 100644 --- a/services/autofill/java/com/android/server/autofill/Session.java +++ b/services/autofill/java/com/android/server/autofill/Session.java @@ -456,6 +456,12 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } : null; } + void newAutofillRequestLocked(@Nullable InlineSuggestionsRequest inlineRequest) { + mPendingFillRequest = null; + mWaitForInlineRequest = inlineRequest != null; + mPendingInlineSuggestionsRequest = inlineRequest; + } + void maybeRequestFillLocked() { if (mPendingFillRequest == null) { return; @@ -886,6 +892,11 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } // Now request the assist structure data. + requestAssistStructureLocked(requestId, flags); + } + + @GuardedBy("mLock") + private void requestAssistStructureLocked(int requestId, int flags) { try { final Bundle receiverExtras = new Bundle(); receiverExtras.putInt(EXTRA_REQUEST_ID, requestId); @@ -1052,12 +1063,13 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState if (requestLog != null) { requestLog.addTaggedData(MetricsEvent.FIELD_AUTOFILL_NUM_DATASETS, -1); } - processNullResponseLocked(requestId, requestFlags); + processNullResponseOrFallbackLocked(requestId, requestFlags); return; } fieldClassificationIds = response.getFieldClassificationIds(); - if (fieldClassificationIds != null && !mService.isFieldClassificationEnabledLocked()) { + if (!mSessionFlags.mClientSuggestionsEnabled && fieldClassificationIds != null + && !mService.isFieldClassificationEnabledLocked()) { Slog.w(TAG, "Ignoring " + response + " because field detection is disabled"); processNullResponseLocked(requestId, requestFlags); return; @@ -1136,6 +1148,26 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } } + @GuardedBy("mLock") + private void processNullResponseOrFallbackLocked(int requestId, int flags) { + if (!mSessionFlags.mClientSuggestionsEnabled) { + processNullResponseLocked(requestId, flags); + return; + } + + // fallback to the default platform password manager + mSessionFlags.mClientSuggestionsEnabled = false; + + final InlineSuggestionsRequest inlineRequest = + (mLastInlineSuggestionsRequest != null + && mLastInlineSuggestionsRequest.first == requestId) + ? mLastInlineSuggestionsRequest.second : null; + mAssistReceiver.newAutofillRequestLocked(inlineRequest); + requestAssistStructureLocked(requestId, + flags & ~FLAG_ENABLED_CLIENT_SUGGESTIONS); + return; + } + // FillServiceCallbacks @Override public void onFillRequestFailure(int requestId, @Nullable CharSequence message) { |