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

Commit 1ef6fc7e authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Support EditorInfo.IME_FLAG_FORCE_ASCII

Bug: 5850605
Change-Id: I6665b483f775094903f2e26f5584e4b141592ab5
parent edf107e2
Loading
Loading
Loading
Loading
+22 −3
Original line number Diff line number Diff line
@@ -26,12 +26,16 @@ public class EditorInfoCompatUtils {
            EditorInfo.class, "IME_FLAG_NAVIGATE_NEXT");
    private static final Field FIELD_IME_FLAG_NAVIGATE_PREVIOUS = CompatUtils.getField(
            EditorInfo.class, "IME_FLAG_NAVIGATE_PREVIOUS");
    private static final Field FIELD_IME_FLAG_FORCE_ASCII = CompatUtils.getField(
            EditorInfo.class, "IME_FLAG_FORCE_ASCII");
    private static final Field FIELD_IME_ACTION_PREVIOUS = CompatUtils.getField(
            EditorInfo.class, "IME_ACTION_PREVIOUS");
    private static final Integer OBJ_IME_FLAG_NAVIGATE_NEXT = (Integer) CompatUtils
            .getFieldValue(null, null, FIELD_IME_FLAG_NAVIGATE_NEXT);
    private static final Integer OBJ_IME_FLAG_NAVIGATE_PREVIOUS = (Integer) CompatUtils
            .getFieldValue(null, null, FIELD_IME_FLAG_NAVIGATE_PREVIOUS);
    private static final Integer OBJ_IME_FLAG_FORCE_ASCII = (Integer) CompatUtils
            .getFieldValue(null, null, FIELD_IME_FLAG_FORCE_ASCII);
    private static final Integer OBJ_IME_ACTION_PREVIOUS = (Integer) CompatUtils
            .getFieldValue(null, null, FIELD_IME_ACTION_PREVIOUS);

@@ -47,6 +51,12 @@ public class EditorInfoCompatUtils {
        return (imeOptions & OBJ_IME_FLAG_NAVIGATE_PREVIOUS) != 0;
    }

    public static boolean hasFlagForceAscii(int imeOptions) {
        if (OBJ_IME_FLAG_FORCE_ASCII == null)
            return false;
        return (imeOptions & OBJ_IME_FLAG_FORCE_ASCII) != 0;
    }

    public static void performEditorActionNext(InputConnection ic) {
        ic.performEditorAction(EditorInfo.IME_ACTION_NEXT);
    }
@@ -93,10 +103,19 @@ public class EditorInfoCompatUtils {
                break;
            }
        }
        final StringBuilder flags = new StringBuilder();
        if ((imeOptions & EditorInfo.IME_FLAG_NO_ENTER_ACTION) != 0) {
            return "flagNoEnterAction|" + action;
        } else {
            return action;
            flags.append("flagNoEnterAction|");
        }
        if (hasFlagNavigateNext(imeOptions)) {
            flags.append("flagNavigateNext|");
        }
        if (hasFlagNavigatePrevious(imeOptions)) {
            flags.append("flagNavigatePrevious|");
        }
        if (hasFlagForceAscii(imeOptions)) {
            flags.append("flagForceAscii|");
        }
        return flags + action;
    }
}
+4 −2
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.util.Log;
import android.util.Xml;
import android.view.inputmethod.EditorInfo;

import com.android.inputmethod.compat.EditorInfoCompatUtils;
import com.android.inputmethod.latin.LatinIME;
import com.android.inputmethod.latin.LatinImeLogger;
import com.android.inputmethod.latin.LocaleUtils;
@@ -179,7 +180,8 @@ public class KeyboardSet {
        // TODO: Use InputMethodSubtype object as argument.
        public Builder setSubtype(Locale inputLocale, boolean asciiCapable,
                boolean touchPositionCorrectionEnabled) {
            final boolean forceAscii = Utils.inPrivateImeOptions(
            final boolean forceAscii = EditorInfoCompatUtils.hasFlagForceAscii(mParams.mImeOptions)
                    || Utils.inPrivateImeOptions(
                            mPackageName, LatinIME.IME_OPTION_FORCE_ASCII, mEditorInfo);
            mParams.mLocale = (forceAscii && !asciiCapable) ? Locale.US : inputLocale;
            mParams.mTouchPositionCorrectionEnabled = touchPositionCorrectionEnabled;
+4 −0
Original line number Diff line number Diff line
@@ -104,10 +104,14 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
     */
    public static final String IME_OPTION_NO_SETTINGS_KEY = "noSettingsKey";

    // TODO: Remove this private option.
    /**
     * The private IME option used to indicate that the given text field needs
     * ASCII code points input.
     *
     * @deprecated Use {@link EditorInfo#IME_FLAG_FORCE_ASCII}.
     */
    @SuppressWarnings("dep-ann")
    public static final String IME_OPTION_FORCE_ASCII = "forceAscii";

    /**