Merge "Consider IME_VISIBLE_IMPERCEPTIBLE as shown for taskbar purposes" into sc-v2-dev

This commit is contained in:
Tony Wickham
2021-12-01 16:26:21 +00:00
committed by Android (Google) Code Review
3 changed files with 21 additions and 2 deletions

View File

@@ -395,7 +395,7 @@ public class InputMethodService extends AbstractInputMethodService {
/**
* @hide
* The IME is visible.
* The IME is perceptibly visible to the user.
*/
public static final int IME_VISIBLE = 0x2;
@@ -406,6 +406,15 @@ public class InputMethodService extends AbstractInputMethodService {
*/
public static final int IME_INVISIBLE = 0x4;
/**
* @hide
* The IME is visible, but not yet perceptible to the user (e.g. fading in)
* by {@link android.view.WindowInsetsController}.
*
* @see InputMethodManager#reportPerceptible
*/
public static final int IME_VISIBLE_IMPERCEPTIBLE = 0x8;
// Min and max values for back disposition.
private static final int BACK_DISPOSITION_MIN = BACK_DISPOSITION_DEFAULT;
private static final int BACK_DISPOSITION_MAX = BACK_DISPOSITION_ADJUST_NOTHING;

View File

@@ -41,6 +41,7 @@ import android.content.ComponentCallbacks;
import android.content.Context;
import android.content.res.Configuration;
import android.hardware.display.DisplayManager;
import android.inputmethodservice.InputMethodService;
import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;
@@ -279,6 +280,10 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
public void setImeWindowStatus(int displayId, IBinder token, int vis, int backDisposition,
boolean showImeSwitcher) {
boolean imeShown = mNavBarHelper.isImeShown(vis);
if (!imeShown) {
// Count imperceptible changes as visible so we transition taskbar out quickly.
imeShown = (vis & InputMethodService.IME_VISIBLE_IMPERCEPTIBLE) != 0;
}
showImeSwitcher = imeShown && showImeSwitcher;
int hints = Utilities.calculateBackDispositionHints(mNavigationIconHints, backDisposition,
imeShown, showImeSwitcher);

View File

@@ -2868,7 +2868,12 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
final long ident = Binder.clearCallingIdentity();
try {
if (!mCurPerceptible) {
vis &= ~InputMethodService.IME_VISIBLE;
if ((vis & InputMethodService.IME_VISIBLE) != 0) {
vis &= ~InputMethodService.IME_VISIBLE;
vis |= InputMethodService.IME_VISIBLE_IMPERCEPTIBLE;
}
} else {
vis &= ~InputMethodService.IME_VISIBLE_IMPERCEPTIBLE;
}
// mImeWindowVis should be updated before calling shouldShowImeSwitcherLocked().
final boolean needsToShowImeSwitcher = shouldShowImeSwitcherLocked(vis);