Loading core/java/android/inputmethodservice/InputMethodService.java +32 −15 Original line number Diff line number Diff line Loading @@ -58,8 +58,6 @@ import static android.view.inputmethod.Flags.FLAG_CONNECTIONLESS_HANDWRITING; import static android.view.inputmethod.Flags.ctrlShiftShortcut; import static android.view.inputmethod.Flags.predictiveBackIme; import static java.lang.annotation.RetentionPolicy.SOURCE; import android.annotation.AnyThread; import android.annotation.CallSuper; import android.annotation.DrawableRes; Loading Loading @@ -500,36 +498,53 @@ public class InputMethodService extends AbstractInputMethodService { public static final int BACK_DISPOSITION_ADJUST_NOTHING = 3; /** * Enum flag to be used for {@link #setBackDisposition(int)}. * The disposition mode that indicates the expected affordance for the back button. * * @hide */ @Retention(SOURCE) @IntDef(value = {BACK_DISPOSITION_DEFAULT, BACK_DISPOSITION_WILL_NOT_DISMISS, BACK_DISPOSITION_WILL_DISMISS, BACK_DISPOSITION_ADJUST_NOTHING}, prefix = "BACK_DISPOSITION_") @IntDef(prefix = { "BACK_DISPOSITION_" }, value = { BACK_DISPOSITION_DEFAULT, BACK_DISPOSITION_WILL_NOT_DISMISS, BACK_DISPOSITION_WILL_DISMISS, BACK_DISPOSITION_ADJUST_NOTHING, }) @Retention(RetentionPolicy.SOURCE) public @interface BackDispositionMode {} /** * The IME is active, and ready to accept touch/key events. It may or may not be visible. * * @hide * The IME is active. It may or may not be visible. */ public static final int IME_ACTIVE = 0x1; public static final int IME_ACTIVE = 1 << 0; /** * @hide * The IME is perceptibly visible to the user. * * @hide */ public static final int IME_VISIBLE = 0x2; public static final int IME_VISIBLE = 1 << 1; /** * @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 = 1 << 2; /** * The IME window visibility state. * * @hide */ @IntDef(flag = true, prefix = { "IME_" }, value = { IME_ACTIVE, IME_VISIBLE, IME_VISIBLE_IMPERCEPTIBLE, }) public @interface ImeWindowVisibility {} // Min and max values for back disposition. private static final int BACK_DISPOSITION_MIN = BACK_DISPOSITION_DEFAULT; Loading Loading @@ -1342,7 +1357,8 @@ public class InputMethodService extends AbstractInputMethodService { mImeSurfaceRemoverRunnable = null; } private void setImeWindowStatus(int visibilityFlags, int backDisposition) { private void setImeWindowStatus(@ImeWindowVisibility int visibilityFlags, @BackDispositionMode int backDisposition) { mPrivOps.setImeWindowStatusAsync(visibilityFlags, backDisposition); } Loading Loading @@ -3301,7 +3317,7 @@ public class InputMethodService extends AbstractInputMethodService { ImeTracker.forLogging().onProgress(statsToken, ImeTracker.PHASE_IME_HIDE_WINDOW); ImeTracing.getInstance().triggerServiceDump("InputMethodService#hideWindow", mDumper, null /* icProto */); setImeWindowStatus(0, mBackDisposition); setImeWindowStatus(0 /* visibilityFlags */, mBackDisposition); if (android.view.inputmethod.Flags.refactorInsetsController()) { // The ImeInsetsSourceProvider need the statsToken when dispatching the control. We // send the token here, so that another request in the provider can be cancelled. Loading Loading @@ -4476,6 +4492,7 @@ public class InputMethodService extends AbstractInputMethodService { }; } @ImeWindowVisibility private int mapToImeWindowStatus() { return IME_ACTIVE | (isInputViewShown() ? IME_VISIBLE : 0); Loading core/java/com/android/internal/inputmethod/InputMethodPrivilegedOperations.java +4 −5 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import android.annotation.AnyThread; import android.annotation.DrawableRes; import android.annotation.NonNull; import android.annotation.Nullable; import android.inputmethodservice.InputMethodService.BackDispositionMode; import android.inputmethodservice.InputMethodService.ImeWindowVisibility; import android.net.Uri; import android.os.IBinder; import android.os.RemoteException; Loading Loading @@ -106,13 +108,10 @@ 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#BACK_DISPOSITION_DEFAULT * @see android.inputmethodservice.InputMethodService#BACK_DISPOSITION_ADJUST_NOTHING */ @AnyThread public void setImeWindowStatusAsync(int vis, int backDisposition) { public void setImeWindowStatusAsync(@ImeWindowVisibility int vis, @BackDispositionMode int backDisposition) { final IInputMethodPrivilegedOperations ops = mOps.getAndWarnIfNull(); if (ops == null) { return; Loading core/java/com/android/internal/statusbar/RegisterStatusBarResult.java +9 −4 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.internal.statusbar; import android.inputmethodservice.InputMethodService.BackDispositionMode; import android.inputmethodservice.InputMethodService.ImeWindowVisibility; import android.os.Parcel; import android.os.Parcelable; import android.util.ArrayMap; Loading @@ -30,7 +32,9 @@ public final class RegisterStatusBarResult implements Parcelable { public final int mDisabledFlags1; // switch[0] public final int mAppearance; // switch[1] public final AppearanceRegion[] mAppearanceRegions; // switch[2] @ImeWindowVisibility public final int mImeWindowVis; // switch[3] @BackDispositionMode public final int mImeBackDisposition; // switch[4] public final boolean mShowImeSwitcher; // switch[5] public final int mDisabledFlags2; // switch[6] Loading @@ -42,10 +46,11 @@ public final class RegisterStatusBarResult implements Parcelable { public final LetterboxDetails[] mLetterboxDetails; public RegisterStatusBarResult(ArrayMap<String, StatusBarIcon> icons, int disabledFlags1, int appearance, AppearanceRegion[] appearanceRegions, int imeWindowVis, int imeBackDisposition, boolean showImeSwitcher, int disabledFlags2, boolean navbarColorManagedByIme, int behavior, int requestedVisibleTypes, String packageName, int transientBarTypes, LetterboxDetails[] letterboxDetails) { int appearance, AppearanceRegion[] appearanceRegions, @ImeWindowVisibility int imeWindowVis, @BackDispositionMode int imeBackDisposition, boolean showImeSwitcher, int disabledFlags2, 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 +3 −2 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.content.res.Resources; import android.graphics.Color; import android.graphics.Rect; import android.inputmethodservice.InputMethodService; import android.inputmethodservice.InputMethodService.BackDispositionMode; import android.os.Build; import android.os.Handler; import android.os.Message; Loading Loading @@ -105,8 +106,8 @@ public class Utilities { * @return updated set of flags from InputMethodService based off {@param oldHints} * Leaves original hints unmodified */ public static int calculateBackDispositionHints(int oldHints, int backDisposition, boolean imeShown, boolean showImeSwitcher) { public static int calculateBackDispositionHints(int oldHints, @BackDispositionMode int backDisposition, boolean imeShown, boolean showImeSwitcher) { int hints = oldHints; switch (backDisposition) { case InputMethodService.BACK_DISPOSITION_DEFAULT: Loading packages/SystemUI/src/com/android/systemui/navigationbar/NavBarHelper.java +2 −1 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import android.content.Context; import android.content.res.Configuration; import android.database.ContentObserver; import android.inputmethodservice.InputMethodService; import android.inputmethodservice.InputMethodService.ImeWindowVisibility; import android.net.Uri; import android.os.Bundle; import android.os.Handler; Loading Loading @@ -516,7 +517,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(int vis) { public boolean isImeShown(@ImeWindowVisibility int vis) { View shadeWindowView = mNotificationShadeWindowController.getWindowRootView(); boolean isKeyguardShowing = mKeyguardStateController.isShowing(); boolean imeVisibleOnShade = shadeWindowView != null && shadeWindowView.isAttachedToWindow() Loading Loading
core/java/android/inputmethodservice/InputMethodService.java +32 −15 Original line number Diff line number Diff line Loading @@ -58,8 +58,6 @@ import static android.view.inputmethod.Flags.FLAG_CONNECTIONLESS_HANDWRITING; import static android.view.inputmethod.Flags.ctrlShiftShortcut; import static android.view.inputmethod.Flags.predictiveBackIme; import static java.lang.annotation.RetentionPolicy.SOURCE; import android.annotation.AnyThread; import android.annotation.CallSuper; import android.annotation.DrawableRes; Loading Loading @@ -500,36 +498,53 @@ public class InputMethodService extends AbstractInputMethodService { public static final int BACK_DISPOSITION_ADJUST_NOTHING = 3; /** * Enum flag to be used for {@link #setBackDisposition(int)}. * The disposition mode that indicates the expected affordance for the back button. * * @hide */ @Retention(SOURCE) @IntDef(value = {BACK_DISPOSITION_DEFAULT, BACK_DISPOSITION_WILL_NOT_DISMISS, BACK_DISPOSITION_WILL_DISMISS, BACK_DISPOSITION_ADJUST_NOTHING}, prefix = "BACK_DISPOSITION_") @IntDef(prefix = { "BACK_DISPOSITION_" }, value = { BACK_DISPOSITION_DEFAULT, BACK_DISPOSITION_WILL_NOT_DISMISS, BACK_DISPOSITION_WILL_DISMISS, BACK_DISPOSITION_ADJUST_NOTHING, }) @Retention(RetentionPolicy.SOURCE) public @interface BackDispositionMode {} /** * The IME is active, and ready to accept touch/key events. It may or may not be visible. * * @hide * The IME is active. It may or may not be visible. */ public static final int IME_ACTIVE = 0x1; public static final int IME_ACTIVE = 1 << 0; /** * @hide * The IME is perceptibly visible to the user. * * @hide */ public static final int IME_VISIBLE = 0x2; public static final int IME_VISIBLE = 1 << 1; /** * @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 = 1 << 2; /** * The IME window visibility state. * * @hide */ @IntDef(flag = true, prefix = { "IME_" }, value = { IME_ACTIVE, IME_VISIBLE, IME_VISIBLE_IMPERCEPTIBLE, }) public @interface ImeWindowVisibility {} // Min and max values for back disposition. private static final int BACK_DISPOSITION_MIN = BACK_DISPOSITION_DEFAULT; Loading Loading @@ -1342,7 +1357,8 @@ public class InputMethodService extends AbstractInputMethodService { mImeSurfaceRemoverRunnable = null; } private void setImeWindowStatus(int visibilityFlags, int backDisposition) { private void setImeWindowStatus(@ImeWindowVisibility int visibilityFlags, @BackDispositionMode int backDisposition) { mPrivOps.setImeWindowStatusAsync(visibilityFlags, backDisposition); } Loading Loading @@ -3301,7 +3317,7 @@ public class InputMethodService extends AbstractInputMethodService { ImeTracker.forLogging().onProgress(statsToken, ImeTracker.PHASE_IME_HIDE_WINDOW); ImeTracing.getInstance().triggerServiceDump("InputMethodService#hideWindow", mDumper, null /* icProto */); setImeWindowStatus(0, mBackDisposition); setImeWindowStatus(0 /* visibilityFlags */, mBackDisposition); if (android.view.inputmethod.Flags.refactorInsetsController()) { // The ImeInsetsSourceProvider need the statsToken when dispatching the control. We // send the token here, so that another request in the provider can be cancelled. Loading Loading @@ -4476,6 +4492,7 @@ public class InputMethodService extends AbstractInputMethodService { }; } @ImeWindowVisibility private int mapToImeWindowStatus() { return IME_ACTIVE | (isInputViewShown() ? IME_VISIBLE : 0); Loading
core/java/com/android/internal/inputmethod/InputMethodPrivilegedOperations.java +4 −5 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import android.annotation.AnyThread; import android.annotation.DrawableRes; import android.annotation.NonNull; import android.annotation.Nullable; import android.inputmethodservice.InputMethodService.BackDispositionMode; import android.inputmethodservice.InputMethodService.ImeWindowVisibility; import android.net.Uri; import android.os.IBinder; import android.os.RemoteException; Loading Loading @@ -106,13 +108,10 @@ 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#BACK_DISPOSITION_DEFAULT * @see android.inputmethodservice.InputMethodService#BACK_DISPOSITION_ADJUST_NOTHING */ @AnyThread public void setImeWindowStatusAsync(int vis, int backDisposition) { public void setImeWindowStatusAsync(@ImeWindowVisibility int vis, @BackDispositionMode int backDisposition) { final IInputMethodPrivilegedOperations ops = mOps.getAndWarnIfNull(); if (ops == null) { return; Loading
core/java/com/android/internal/statusbar/RegisterStatusBarResult.java +9 −4 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.internal.statusbar; import android.inputmethodservice.InputMethodService.BackDispositionMode; import android.inputmethodservice.InputMethodService.ImeWindowVisibility; import android.os.Parcel; import android.os.Parcelable; import android.util.ArrayMap; Loading @@ -30,7 +32,9 @@ public final class RegisterStatusBarResult implements Parcelable { public final int mDisabledFlags1; // switch[0] public final int mAppearance; // switch[1] public final AppearanceRegion[] mAppearanceRegions; // switch[2] @ImeWindowVisibility public final int mImeWindowVis; // switch[3] @BackDispositionMode public final int mImeBackDisposition; // switch[4] public final boolean mShowImeSwitcher; // switch[5] public final int mDisabledFlags2; // switch[6] Loading @@ -42,10 +46,11 @@ public final class RegisterStatusBarResult implements Parcelable { public final LetterboxDetails[] mLetterboxDetails; public RegisterStatusBarResult(ArrayMap<String, StatusBarIcon> icons, int disabledFlags1, int appearance, AppearanceRegion[] appearanceRegions, int imeWindowVis, int imeBackDisposition, boolean showImeSwitcher, int disabledFlags2, boolean navbarColorManagedByIme, int behavior, int requestedVisibleTypes, String packageName, int transientBarTypes, LetterboxDetails[] letterboxDetails) { int appearance, AppearanceRegion[] appearanceRegions, @ImeWindowVisibility int imeWindowVis, @BackDispositionMode int imeBackDisposition, boolean showImeSwitcher, int disabledFlags2, 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 +3 −2 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.content.res.Resources; import android.graphics.Color; import android.graphics.Rect; import android.inputmethodservice.InputMethodService; import android.inputmethodservice.InputMethodService.BackDispositionMode; import android.os.Build; import android.os.Handler; import android.os.Message; Loading Loading @@ -105,8 +106,8 @@ public class Utilities { * @return updated set of flags from InputMethodService based off {@param oldHints} * Leaves original hints unmodified */ public static int calculateBackDispositionHints(int oldHints, int backDisposition, boolean imeShown, boolean showImeSwitcher) { public static int calculateBackDispositionHints(int oldHints, @BackDispositionMode int backDisposition, boolean imeShown, boolean showImeSwitcher) { int hints = oldHints; switch (backDisposition) { case InputMethodService.BACK_DISPOSITION_DEFAULT: Loading
packages/SystemUI/src/com/android/systemui/navigationbar/NavBarHelper.java +2 −1 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import android.content.Context; import android.content.res.Configuration; import android.database.ContentObserver; import android.inputmethodservice.InputMethodService; import android.inputmethodservice.InputMethodService.ImeWindowVisibility; import android.net.Uri; import android.os.Bundle; import android.os.Handler; Loading Loading @@ -516,7 +517,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(int vis) { public boolean isImeShown(@ImeWindowVisibility int vis) { View shadeWindowView = mNotificationShadeWindowController.getWindowRootView(); boolean isKeyguardShowing = mKeyguardStateController.isShowing(); boolean imeVisibleOnShade = shadeWindowView != null && shadeWindowView.isAttachedToWindow() Loading