Loading core/java/android/inputmethodservice/InputMethodService.java +33 −47 Original line number Diff line number Diff line Loading @@ -52,6 +52,8 @@ import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import static android.view.WindowInsets.Type.navigationBars; import static android.view.WindowInsets.Type.statusBars; import static java.lang.annotation.RetentionPolicy.SOURCE; import android.annotation.AnyThread; import android.annotation.CallSuper; import android.annotation.DrawableRes; Loading Loading @@ -158,7 +160,6 @@ import com.android.internal.inputmethod.InputMethodNavButtonFlags; import com.android.internal.inputmethod.InputMethodPrivilegedOperations; import com.android.internal.inputmethod.InputMethodPrivilegedOperationsRegistry; import com.android.internal.inputmethod.SoftInputShowHideReason; import com.android.internal.util.Preconditions; import com.android.internal.util.RingBuffer; import org.xmlpull.v1.XmlPullParserException; Loading Loading @@ -481,53 +482,43 @@ public class InputMethodService extends AbstractInputMethodService { public static final int BACK_DISPOSITION_ADJUST_NOTHING = 3; /** * Enum values to be used for {@link #setBackDisposition(int)}. * Enum flag to be used for {@link #setBackDisposition(int)}. * * @hide */ @IntDef(prefix = { "BACK_DISPOSITION_" }, value = { BACK_DISPOSITION_DEFAULT, BACK_DISPOSITION_WILL_NOT_DISMISS, BACK_DISPOSITION_WILL_DISMISS, BACK_DISPOSITION_ADJUST_NOTHING, }) @Retention(RetentionPolicy.SOURCE) @Retention(SOURCE) @IntDef(value = {BACK_DISPOSITION_DEFAULT, BACK_DISPOSITION_WILL_NOT_DISMISS, BACK_DISPOSITION_WILL_DISMISS, BACK_DISPOSITION_ADJUST_NOTHING}, prefix = "BACK_DISPOSITION_") public @interface BackDispositionMode {} /** * Enum flags to be used for {@link #setImeWindowStatus}, representing the current state of the * IME window visibility. * * @hide * The IME is active. It may or may not be visible. */ @IntDef(flag = true, prefix = { "IME_" }, value = { IME_ACTIVE, IME_VISIBLE, IME_VISIBLE_IMPERCEPTIBLE, }) @Retention(RetentionPolicy.SOURCE) public @interface ImeWindowVisibility {} public static final int IME_ACTIVE = 0x1; /** * The IME is active. It may or may not be visible. * @hide * The IME is perceptibly visible to the user. */ public static final int IME_ACTIVE = 0x1; public static final int IME_VISIBLE = 0x2; /** * The IME is perceptibly visible to the user. * @hide * The IME is active and ready with views but set invisible. * This flag cannot be combined with {@link #IME_VISIBLE}. */ public static final int IME_VISIBLE = 0x2; 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 * @hide */ public static final int IME_VISIBLE_IMPERCEPTIBLE = 0x4; 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; Loading Loading @@ -640,18 +631,9 @@ public class InputMethodService extends AbstractInputMethodService { int mStatusIcon; /** * Latest value reported of back disposition mode. */ @BackDispositionMode int mBackDisposition; /** * Latest value reported of IME window visibility flags. */ @ImeWindowVisibility private int mImeWindowVisibility; private Object mLock = new Object(); @GuardedBy("mLock") private boolean mNotifyUserActionSent; Loading Loading @@ -1228,14 +1210,8 @@ public class InputMethodService extends AbstractInputMethodService { mImeSurfaceRemoverRunnable = null; } private void setImeWindowStatus(@ImeWindowVisibility int vis, @BackDispositionMode int backDisposition) { if (vis == mImeWindowVisibility && backDisposition == mBackDisposition) { return; } mImeWindowVisibility = Preconditions.checkFlagsArgument(vis, IME_ACTIVE | IME_VISIBLE); mBackDisposition = backDisposition; mPrivOps.setImeWindowStatusAsync(mImeWindowVisibility, mBackDisposition); private void setImeWindowStatus(int visibilityFlags, int backDisposition) { mPrivOps.setImeWindowStatusAsync(visibilityFlags, backDisposition); } /** Set region of the keyboard to be avoided from back gesture */ Loading Loading @@ -1909,11 +1885,15 @@ public class InputMethodService extends AbstractInputMethodService { * @param disposition disposition mode to be set */ public void setBackDisposition(@BackDispositionMode int disposition) { if (disposition < BACK_DISPOSITION_MIN || disposition > BACK_DISPOSITION_MAX) { if (disposition == mBackDisposition) { return; } if (disposition > BACK_DISPOSITION_MAX || disposition < BACK_DISPOSITION_MIN) { Log.e(TAG, "Invalid back disposition value (" + disposition + ") specified."); return; } setImeWindowStatus(mImeWindowVisibility, disposition); mBackDisposition = disposition; setImeWindowStatus(mapToImeWindowStatus(), mBackDisposition); } /** Loading Loading @@ -2887,8 +2867,14 @@ public class InputMethodService extends AbstractInputMethodService { Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "IMS.showWindow"); mDecorViewWasVisible = mDecorViewVisible; mInShowWindow = true; final int previousImeWindowStatus = (mDecorViewVisible ? IME_ACTIVE : 0) | (isInputViewShown() ? (!mWindowVisible ? IME_INVISIBLE : IME_VISIBLE) : 0); startViews(prepareWindow(showInput)); setImeWindowStatus(mapToImeWindowStatus(), mBackDisposition); final int nextImeWindowStatus = mapToImeWindowStatus(); if (previousImeWindowStatus != nextImeWindowStatus) { setImeWindowStatus(nextImeWindowStatus, mBackDisposition); } mNavigationBarController.onWindowShown(); // compute visibility Loading Loading @@ -4099,9 +4085,9 @@ public class InputMethodService extends AbstractInputMethodService { }; } @ImeWindowVisibility private int mapToImeWindowStatus() { return IME_ACTIVE | (mDecorViewVisible ? IME_VISIBLE : 0); return IME_ACTIVE | (isInputViewShown() ? IME_VISIBLE : 0); } private boolean isAutomotive() { Loading core/java/com/android/internal/inputmethod/InputMethodPrivilegedOperations.java +6 −3 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import android.annotation.AnyThread; import android.annotation.DrawableRes; import android.annotation.NonNull; import android.annotation.Nullable; import android.inputmethodservice.InputMethodService; import android.net.Uri; import android.os.IBinder; import android.os.RemoteException; Loading Loading @@ -106,10 +105,14 @@ public final class InputMethodPrivilegedOperations { * * @param vis visibility flags * @param backDisposition disposition flags * @see android.inputmethodservice.InputMethodService#IME_ACTIVE * @see android.inputmethodservice.InputMethodService#IME_VISIBLE * @see android.inputmethodservice.InputMethodService#IME_INVISIBLE * @see android.inputmethodservice.InputMethodService#BACK_DISPOSITION_DEFAULT * @see android.inputmethodservice.InputMethodService#BACK_DISPOSITION_ADJUST_NOTHING */ @AnyThread public void setImeWindowStatusAsync(@InputMethodService.ImeWindowVisibility int vis, @InputMethodService.BackDispositionMode int backDisposition) { public void setImeWindowStatusAsync(int vis, int backDisposition) { final IInputMethodPrivilegedOperations ops = mOps.getAndWarnIfNull(); if (ops == null) { return; Loading core/java/com/android/internal/statusbar/RegisterStatusBarResult.java +4 −9 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.internal.statusbar; import android.inputmethodservice.InputMethodService; import android.os.IBinder; import android.os.Parcel; import android.os.Parcelable; Loading @@ -32,9 +31,7 @@ public final class RegisterStatusBarResult implements Parcelable { public final int mDisabledFlags1; // switch[0] public final int mAppearance; // switch[1] public final AppearanceRegion[] mAppearanceRegions; // switch[2] @InputMethodService.ImeWindowVisibility public final int mImeWindowVis; // switch[3] @InputMethodService.BackDispositionMode public final int mImeBackDisposition; // switch[4] public final boolean mShowImeSwitcher; // switch[5] public final int mDisabledFlags2; // switch[6] Loading @@ -47,12 +44,10 @@ public final class RegisterStatusBarResult implements Parcelable { public final LetterboxDetails[] mLetterboxDetails; public RegisterStatusBarResult(ArrayMap<String, StatusBarIcon> icons, int disabledFlags1, int appearance, AppearanceRegion[] appearanceRegions, @InputMethodService.ImeWindowVisibility int imeWindowVis, @InputMethodService.BackDispositionMode int imeBackDisposition, boolean showImeSwitcher, int disabledFlags2, IBinder imeToken, boolean navbarColorManagedByIme, int behavior, int requestedVisibleTypes, String packageName, int transientBarTypes, LetterboxDetails[] letterboxDetails) { int appearance, AppearanceRegion[] appearanceRegions, int imeWindowVis, int imeBackDisposition, boolean showImeSwitcher, int disabledFlags2, IBinder imeToken, boolean navbarColorManagedByIme, int behavior, int requestedVisibleTypes, String packageName, int transientBarTypes, LetterboxDetails[] letterboxDetails) { mIcons = new ArrayMap<>(icons); mDisabledFlags1 = disabledFlags1; mAppearance = appearance; Loading packages/SystemUI/shared/src/com/android/systemui/shared/recents/utilities/Utilities.java +1 −2 Original line number Diff line number Diff line Loading @@ -104,8 +104,7 @@ public class Utilities { * @return updated set of flags from InputMethodService based off {@param oldHints} * Leaves original hints unmodified */ public static int calculateBackDispositionHints(int oldHints, @InputMethodService.BackDispositionMode int backDisposition, public static int calculateBackDispositionHints(int oldHints, int backDisposition, boolean imeShown, boolean showImeSwitcher) { int hints = oldHints; switch (backDisposition) { Loading packages/SystemUI/src/com/android/systemui/navigationbar/NavBarHelper.java +1 −1 Original line number Diff line number Diff line Loading @@ -462,7 +462,7 @@ public final class NavBarHelper implements * @return Whether the IME is shown on top of the screen given the {@code vis} flag of * {@link InputMethodService} and the keyguard states. */ public boolean isImeShown(@InputMethodService.ImeWindowVisibility int vis) { public boolean isImeShown(int vis) { View shadeWindowView = mNotificationShadeWindowController.getWindowRootView(); boolean isKeyguardShowing = mKeyguardStateController.isShowing(); boolean imeVisibleOnShade = shadeWindowView != null && shadeWindowView.isAttachedToWindow() Loading Loading
core/java/android/inputmethodservice/InputMethodService.java +33 −47 Original line number Diff line number Diff line Loading @@ -52,6 +52,8 @@ import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import static android.view.WindowInsets.Type.navigationBars; import static android.view.WindowInsets.Type.statusBars; import static java.lang.annotation.RetentionPolicy.SOURCE; import android.annotation.AnyThread; import android.annotation.CallSuper; import android.annotation.DrawableRes; Loading Loading @@ -158,7 +160,6 @@ import com.android.internal.inputmethod.InputMethodNavButtonFlags; import com.android.internal.inputmethod.InputMethodPrivilegedOperations; import com.android.internal.inputmethod.InputMethodPrivilegedOperationsRegistry; import com.android.internal.inputmethod.SoftInputShowHideReason; import com.android.internal.util.Preconditions; import com.android.internal.util.RingBuffer; import org.xmlpull.v1.XmlPullParserException; Loading Loading @@ -481,53 +482,43 @@ public class InputMethodService extends AbstractInputMethodService { public static final int BACK_DISPOSITION_ADJUST_NOTHING = 3; /** * Enum values to be used for {@link #setBackDisposition(int)}. * Enum flag to be used for {@link #setBackDisposition(int)}. * * @hide */ @IntDef(prefix = { "BACK_DISPOSITION_" }, value = { BACK_DISPOSITION_DEFAULT, BACK_DISPOSITION_WILL_NOT_DISMISS, BACK_DISPOSITION_WILL_DISMISS, BACK_DISPOSITION_ADJUST_NOTHING, }) @Retention(RetentionPolicy.SOURCE) @Retention(SOURCE) @IntDef(value = {BACK_DISPOSITION_DEFAULT, BACK_DISPOSITION_WILL_NOT_DISMISS, BACK_DISPOSITION_WILL_DISMISS, BACK_DISPOSITION_ADJUST_NOTHING}, prefix = "BACK_DISPOSITION_") public @interface BackDispositionMode {} /** * Enum flags to be used for {@link #setImeWindowStatus}, representing the current state of the * IME window visibility. * * @hide * The IME is active. It may or may not be visible. */ @IntDef(flag = true, prefix = { "IME_" }, value = { IME_ACTIVE, IME_VISIBLE, IME_VISIBLE_IMPERCEPTIBLE, }) @Retention(RetentionPolicy.SOURCE) public @interface ImeWindowVisibility {} public static final int IME_ACTIVE = 0x1; /** * The IME is active. It may or may not be visible. * @hide * The IME is perceptibly visible to the user. */ public static final int IME_ACTIVE = 0x1; public static final int IME_VISIBLE = 0x2; /** * The IME is perceptibly visible to the user. * @hide * The IME is active and ready with views but set invisible. * This flag cannot be combined with {@link #IME_VISIBLE}. */ public static final int IME_VISIBLE = 0x2; 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 * @hide */ public static final int IME_VISIBLE_IMPERCEPTIBLE = 0x4; 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; Loading Loading @@ -640,18 +631,9 @@ public class InputMethodService extends AbstractInputMethodService { int mStatusIcon; /** * Latest value reported of back disposition mode. */ @BackDispositionMode int mBackDisposition; /** * Latest value reported of IME window visibility flags. */ @ImeWindowVisibility private int mImeWindowVisibility; private Object mLock = new Object(); @GuardedBy("mLock") private boolean mNotifyUserActionSent; Loading Loading @@ -1228,14 +1210,8 @@ public class InputMethodService extends AbstractInputMethodService { mImeSurfaceRemoverRunnable = null; } private void setImeWindowStatus(@ImeWindowVisibility int vis, @BackDispositionMode int backDisposition) { if (vis == mImeWindowVisibility && backDisposition == mBackDisposition) { return; } mImeWindowVisibility = Preconditions.checkFlagsArgument(vis, IME_ACTIVE | IME_VISIBLE); mBackDisposition = backDisposition; mPrivOps.setImeWindowStatusAsync(mImeWindowVisibility, mBackDisposition); private void setImeWindowStatus(int visibilityFlags, int backDisposition) { mPrivOps.setImeWindowStatusAsync(visibilityFlags, backDisposition); } /** Set region of the keyboard to be avoided from back gesture */ Loading Loading @@ -1909,11 +1885,15 @@ public class InputMethodService extends AbstractInputMethodService { * @param disposition disposition mode to be set */ public void setBackDisposition(@BackDispositionMode int disposition) { if (disposition < BACK_DISPOSITION_MIN || disposition > BACK_DISPOSITION_MAX) { if (disposition == mBackDisposition) { return; } if (disposition > BACK_DISPOSITION_MAX || disposition < BACK_DISPOSITION_MIN) { Log.e(TAG, "Invalid back disposition value (" + disposition + ") specified."); return; } setImeWindowStatus(mImeWindowVisibility, disposition); mBackDisposition = disposition; setImeWindowStatus(mapToImeWindowStatus(), mBackDisposition); } /** Loading Loading @@ -2887,8 +2867,14 @@ public class InputMethodService extends AbstractInputMethodService { Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "IMS.showWindow"); mDecorViewWasVisible = mDecorViewVisible; mInShowWindow = true; final int previousImeWindowStatus = (mDecorViewVisible ? IME_ACTIVE : 0) | (isInputViewShown() ? (!mWindowVisible ? IME_INVISIBLE : IME_VISIBLE) : 0); startViews(prepareWindow(showInput)); setImeWindowStatus(mapToImeWindowStatus(), mBackDisposition); final int nextImeWindowStatus = mapToImeWindowStatus(); if (previousImeWindowStatus != nextImeWindowStatus) { setImeWindowStatus(nextImeWindowStatus, mBackDisposition); } mNavigationBarController.onWindowShown(); // compute visibility Loading Loading @@ -4099,9 +4085,9 @@ public class InputMethodService extends AbstractInputMethodService { }; } @ImeWindowVisibility private int mapToImeWindowStatus() { return IME_ACTIVE | (mDecorViewVisible ? IME_VISIBLE : 0); return IME_ACTIVE | (isInputViewShown() ? IME_VISIBLE : 0); } private boolean isAutomotive() { Loading
core/java/com/android/internal/inputmethod/InputMethodPrivilegedOperations.java +6 −3 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import android.annotation.AnyThread; import android.annotation.DrawableRes; import android.annotation.NonNull; import android.annotation.Nullable; import android.inputmethodservice.InputMethodService; import android.net.Uri; import android.os.IBinder; import android.os.RemoteException; Loading Loading @@ -106,10 +105,14 @@ public final class InputMethodPrivilegedOperations { * * @param vis visibility flags * @param backDisposition disposition flags * @see android.inputmethodservice.InputMethodService#IME_ACTIVE * @see android.inputmethodservice.InputMethodService#IME_VISIBLE * @see android.inputmethodservice.InputMethodService#IME_INVISIBLE * @see android.inputmethodservice.InputMethodService#BACK_DISPOSITION_DEFAULT * @see android.inputmethodservice.InputMethodService#BACK_DISPOSITION_ADJUST_NOTHING */ @AnyThread public void setImeWindowStatusAsync(@InputMethodService.ImeWindowVisibility int vis, @InputMethodService.BackDispositionMode int backDisposition) { public void setImeWindowStatusAsync(int vis, int backDisposition) { final IInputMethodPrivilegedOperations ops = mOps.getAndWarnIfNull(); if (ops == null) { return; Loading
core/java/com/android/internal/statusbar/RegisterStatusBarResult.java +4 −9 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.internal.statusbar; import android.inputmethodservice.InputMethodService; import android.os.IBinder; import android.os.Parcel; import android.os.Parcelable; Loading @@ -32,9 +31,7 @@ public final class RegisterStatusBarResult implements Parcelable { public final int mDisabledFlags1; // switch[0] public final int mAppearance; // switch[1] public final AppearanceRegion[] mAppearanceRegions; // switch[2] @InputMethodService.ImeWindowVisibility public final int mImeWindowVis; // switch[3] @InputMethodService.BackDispositionMode public final int mImeBackDisposition; // switch[4] public final boolean mShowImeSwitcher; // switch[5] public final int mDisabledFlags2; // switch[6] Loading @@ -47,12 +44,10 @@ public final class RegisterStatusBarResult implements Parcelable { public final LetterboxDetails[] mLetterboxDetails; public RegisterStatusBarResult(ArrayMap<String, StatusBarIcon> icons, int disabledFlags1, int appearance, AppearanceRegion[] appearanceRegions, @InputMethodService.ImeWindowVisibility int imeWindowVis, @InputMethodService.BackDispositionMode int imeBackDisposition, boolean showImeSwitcher, int disabledFlags2, IBinder imeToken, boolean navbarColorManagedByIme, int behavior, int requestedVisibleTypes, String packageName, int transientBarTypes, LetterboxDetails[] letterboxDetails) { int appearance, AppearanceRegion[] appearanceRegions, int imeWindowVis, int imeBackDisposition, boolean showImeSwitcher, int disabledFlags2, IBinder imeToken, boolean navbarColorManagedByIme, int behavior, int requestedVisibleTypes, String packageName, int transientBarTypes, LetterboxDetails[] letterboxDetails) { mIcons = new ArrayMap<>(icons); mDisabledFlags1 = disabledFlags1; mAppearance = appearance; Loading
packages/SystemUI/shared/src/com/android/systemui/shared/recents/utilities/Utilities.java +1 −2 Original line number Diff line number Diff line Loading @@ -104,8 +104,7 @@ public class Utilities { * @return updated set of flags from InputMethodService based off {@param oldHints} * Leaves original hints unmodified */ public static int calculateBackDispositionHints(int oldHints, @InputMethodService.BackDispositionMode int backDisposition, public static int calculateBackDispositionHints(int oldHints, int backDisposition, boolean imeShown, boolean showImeSwitcher) { int hints = oldHints; switch (backDisposition) { Loading
packages/SystemUI/src/com/android/systemui/navigationbar/NavBarHelper.java +1 −1 Original line number Diff line number Diff line Loading @@ -462,7 +462,7 @@ public final class NavBarHelper implements * @return Whether the IME is shown on top of the screen given the {@code vis} flag of * {@link InputMethodService} and the keyguard states. */ public boolean isImeShown(@InputMethodService.ImeWindowVisibility int vis) { public boolean isImeShown(int vis) { View shadeWindowView = mNotificationShadeWindowController.getWindowRootView(); boolean isKeyguardShowing = mKeyguardStateController.isShowing(); boolean imeVisibleOnShade = shadeWindowView != null && shadeWindowView.isAttachedToWindow() Loading