Merge "Change to drop down when the inline suggestions don't be shown in IME." into rvc-dev
This commit is contained in:
@@ -149,6 +149,11 @@ class InlineSuggestionSession {
|
||||
*/
|
||||
@MainThread
|
||||
void invalidate() {
|
||||
try {
|
||||
mCallback.onInlineSuggestionsSessionInvalidated();
|
||||
} catch (RemoteException e) {
|
||||
Log.w(TAG, "onInlineSuggestionsSessionInvalidated() remote exception:" + e);
|
||||
}
|
||||
if (mResponseCallback != null) {
|
||||
consumeInlineSuggestionsResponse(EMPTY_RESPONSE);
|
||||
mResponseCallback.invalidate();
|
||||
|
||||
@@ -58,4 +58,7 @@ oneway interface IInlineSuggestionsRequestCallback {
|
||||
// #onFinishInput()} is called on the field specified by the earlier
|
||||
// {@link #onInputMethodStartInput(AutofillId)}.
|
||||
void onInputMethodFinishInput();
|
||||
|
||||
// Indicates that the current IME changes inline suggestion session.
|
||||
void onInlineSuggestionsSessionInvalidated();
|
||||
}
|
||||
|
||||
@@ -103,6 +103,8 @@ final class AutofillInlineSuggestionsRequestSession {
|
||||
private boolean mDestroyed = false;
|
||||
@GuardedBy("mLock")
|
||||
private boolean mPreviousHasNonPinSuggestionShow;
|
||||
@GuardedBy("mLock")
|
||||
private boolean mImeSessionInvalidated = false;
|
||||
|
||||
AutofillInlineSuggestionsRequestSession(
|
||||
@NonNull InputMethodManagerInternal inputMethodManagerInternal, int userId,
|
||||
@@ -157,7 +159,7 @@ final class AutofillInlineSuggestionsRequestSession {
|
||||
Slog.d(TAG,
|
||||
"onInlineSuggestionsResponseLocked called for:" + inlineFillUi.getAutofillId());
|
||||
}
|
||||
if (mImeRequest == null || mResponseCallback == null) {
|
||||
if (mImeRequest == null || mResponseCallback == null || mImeSessionInvalidated) {
|
||||
return false;
|
||||
}
|
||||
// TODO(b/151123764): each session should only correspond to one field.
|
||||
@@ -191,6 +193,7 @@ final class AutofillInlineSuggestionsRequestSession {
|
||||
if (mDestroyed) {
|
||||
return;
|
||||
}
|
||||
mImeSessionInvalidated = false;
|
||||
if (sDebug) Slog.d(TAG, "onCreateInlineSuggestionsRequestLocked called: " + mAutofillId);
|
||||
mInputMethodManagerInternal.onCreateInlineSuggestionsRequest(mUserId,
|
||||
new InlineSuggestionsRequestInfo(mComponentName, mAutofillId, mUiExtras),
|
||||
@@ -291,6 +294,7 @@ final class AutofillInlineSuggestionsRequestSession {
|
||||
return;
|
||||
}
|
||||
mImeRequestReceived = true;
|
||||
mImeSessionInvalidated = false;
|
||||
|
||||
if (request != null && callback != null) {
|
||||
mImeRequest = request;
|
||||
@@ -346,6 +350,20 @@ final class AutofillInlineSuggestionsRequestSession {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the IME session status received from the IME.
|
||||
*
|
||||
* <p> Should only be invoked in the {@link #mHandler} thread.
|
||||
*/
|
||||
private void handleOnReceiveImeSessionInvalidated() {
|
||||
synchronized (mLock) {
|
||||
if (mDestroyed) {
|
||||
return;
|
||||
}
|
||||
mImeSessionInvalidated = true;
|
||||
}
|
||||
}
|
||||
|
||||
private static final class InlineSuggestionsRequestCallbackImpl extends
|
||||
IInlineSuggestionsRequestCallback.Stub {
|
||||
|
||||
@@ -433,6 +451,18 @@ final class AutofillInlineSuggestionsRequestSession {
|
||||
session, false, false));
|
||||
}
|
||||
}
|
||||
|
||||
@BinderThread
|
||||
@Override
|
||||
public void onInlineSuggestionsSessionInvalidated() throws RemoteException {
|
||||
if (sDebug) Slog.d(TAG, "onInlineSuggestionsSessionInvalidated() called.");
|
||||
final AutofillInlineSuggestionsRequestSession session = mSession.get();
|
||||
if (session != null) {
|
||||
session.mHandler.sendMessage(obtainMessage(
|
||||
AutofillInlineSuggestionsRequestSession
|
||||
::handleOnReceiveImeSessionInvalidated, session));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean match(@Nullable AutofillId autofillId,
|
||||
|
||||
@@ -2128,6 +2128,11 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
|
||||
public void onInputMethodFinishInput() throws RemoteException {
|
||||
mCallback.onInputMethodFinishInput();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInlineSuggestionsSessionInvalidated() throws RemoteException {
|
||||
mCallback.onInlineSuggestionsSessionInvalidated();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user