Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b8d358ce authored by Cosmin Băieș's avatar Cosmin Băieș Committed by Android (Google) Code Review
Browse files

Merge "Use ImeWindowVisibility and BackDispositionMode" into main

parents e30e313e fb0610fd
Loading
Loading
Loading
Loading
+32 −15
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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);
    }

@@ -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.
@@ -4476,6 +4492,7 @@ public class InputMethodService extends AbstractInputMethodService {
        };
    }

    @ImeWindowVisibility
    private int mapToImeWindowStatus() {
        return IME_ACTIVE
                | (isInputViewShown() ? IME_VISIBLE : 0);
+4 −5
Original line number Diff line number Diff line
@@ -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;
@@ -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;
+9 −4
Original line number Diff line number Diff line
@@ -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;
@@ -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]
@@ -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;
+3 −2
Original line number Diff line number Diff line
@@ -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;
@@ -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:
+2 −1
Original line number Diff line number Diff line
@@ -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;
@@ -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