Merge "Don't start new inline autofill flow if one started already." into rvc-dev am: 954c18bd5e

Change-Id: Ibae1e96cf30731eeac6e789b0e56ef94a2786d3f
This commit is contained in:
Adam He
2020-05-01 23:27:04 +00:00
committed by Automerger Merge Worker
2 changed files with 18 additions and 8 deletions

View File

@@ -325,7 +325,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
@GuardedBy("mLock") @GuardedBy("mLock")
private CountDownLatch mCountDownLatch = new CountDownLatch(0); private CountDownLatch mCountDownLatch = new CountDownLatch(0);
@Nullable Consumer<InlineSuggestionsRequest> newAutofillRequestLocked( @Nullable Consumer<InlineSuggestionsRequest> newAutofillRequestLocked(ViewState viewState,
boolean isInlineRequest) { boolean isInlineRequest) {
mCountDownLatch = new CountDownLatch(isInlineRequest ? 2 : 1); mCountDownLatch = new CountDownLatch(isInlineRequest ? 2 : 1);
mPendingFillRequest = null; mPendingFillRequest = null;
@@ -338,6 +338,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
mPendingInlineSuggestionsRequest = inlineSuggestionsRequest; mPendingInlineSuggestionsRequest = inlineSuggestionsRequest;
mCountDownLatch.countDown(); mCountDownLatch.countDown();
maybeRequestFillLocked(); maybeRequestFillLocked();
viewState.resetState(ViewState.STATE_PENDING_CREATE_INLINE_REQUEST);
} }
} : null; } : null;
} }
@@ -716,18 +717,23 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
mService.getRemoteInlineSuggestionRenderServiceLocked(); mService.getRemoteInlineSuggestionRenderServiceLocked();
if (isInlineSuggestionsEnabledByAutofillProviderLocked() && remoteRenderService != null) { if (isInlineSuggestionsEnabledByAutofillProviderLocked() && remoteRenderService != null) {
Consumer<InlineSuggestionsRequest> inlineSuggestionsRequestConsumer = Consumer<InlineSuggestionsRequest> inlineSuggestionsRequestConsumer =
mAssistReceiver.newAutofillRequestLocked(/*isInlineRequest=*/ true); mAssistReceiver.newAutofillRequestLocked(viewState,
/*isInlineRequest=*/ true);
if (inlineSuggestionsRequestConsumer != null) { if (inlineSuggestionsRequestConsumer != null) {
final AutofillId focusedId = mCurrentViewId; final AutofillId focusedId = mCurrentViewId;
remoteRenderService.getInlineSuggestionsRendererInfo( remoteRenderService.getInlineSuggestionsRendererInfo(
new RemoteCallback((extras) -> { new RemoteCallback((extras) -> {
mInlineSessionController.onCreateInlineSuggestionsRequestLocked( synchronized (mLock) {
focusedId, inlineSuggestionsRequestConsumer, extras); mInlineSessionController.onCreateInlineSuggestionsRequestLocked(
} focusedId, inlineSuggestionsRequestConsumer, extras);
)); }
}, mHandler)
);
viewState.setState(ViewState.STATE_PENDING_CREATE_INLINE_REQUEST);
} }
} else { } else {
mAssistReceiver.newAutofillRequestLocked(/*isInlineRequest=*/ false); mAssistReceiver.newAutofillRequestLocked(viewState,
/*isInlineRequest=*/ false);
} }
// Now request the assist structure data. // Now request the assist structure data.
@@ -2368,7 +2374,9 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
*/ */
@GuardedBy("mLock") @GuardedBy("mLock")
private boolean shouldStartNewPartitionLocked(@NonNull AutofillId id) { private boolean shouldStartNewPartitionLocked(@NonNull AutofillId id) {
if (mResponses == null) { final ViewState currentView = mViewStates.get(id);
if (mResponses == null && currentView != null
&& (currentView.getState() & ViewState.STATE_PENDING_CREATE_INLINE_REQUEST) == 0) {
return true; return true;
} }

View File

@@ -80,6 +80,8 @@ final class ViewState {
public static final int STATE_CHAR_REMOVED = 0x4000; public static final int STATE_CHAR_REMOVED = 0x4000;
/** Showing inline suggestions is not allowed for this View. */ /** Showing inline suggestions is not allowed for this View. */
public static final int STATE_INLINE_DISABLED = 0x8000; public static final int STATE_INLINE_DISABLED = 0x8000;
/** The View is waiting for an inline suggestions request from IME.*/
public static final int STATE_PENDING_CREATE_INLINE_REQUEST = 0x10000;
public final AutofillId id; public final AutofillId id;