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

Commit 491ca900 authored by Dan Zivkovic's avatar Dan Zivkovic Committed by Android (Google) Code Review
Browse files

Merge "Handle null InputMethodSubtype."

parents 2fcb7c5d b86ca76c
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ import java.util.Map;
import java.util.Set;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;

/**
 * Enrichment class for InputMethodManager to simplify interaction and add functionality.
@@ -329,7 +330,7 @@ public class RichInputMethodManager {

    @UsedForTesting
    static void forceSubtype(@Nonnull final InputMethodSubtype subtype) {
        sForcedSubtypeForTesting = new RichInputMethodSubtype(subtype);
        sForcedSubtypeForTesting = RichInputMethodSubtype.getRichInputMethodSubtype(subtype);
    }

    @Nonnull
@@ -488,8 +489,8 @@ public class RichInputMethodManager {
        return true;
    }

    private void updateCurrentSubtype(@Nonnull final InputMethodSubtype subtype) {
        mCurrentRichInputMethodSubtype = new RichInputMethodSubtype(subtype);
    private void updateCurrentSubtype(@Nullable final InputMethodSubtype subtype) {
        mCurrentRichInputMethodSubtype = RichInputMethodSubtype.getRichInputMethodSubtype(subtype);
    }

    private void updateShortcutIme() {
+10 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import java.util.Arrays;
import java.util.Locale;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;

/**
 * Enrichment class for InputMethodSubtype to enable concurrent multi-lingual input.
@@ -147,6 +148,15 @@ public final class RichInputMethodSubtype {
        return SubtypeLocaleUtils.getKeyboardLayoutSetName(mSubtype);
    }

    public static RichInputMethodSubtype getRichInputMethodSubtype(
            @Nullable final InputMethodSubtype subtype) {
        if (subtype == null) {
            return getNoLanguageSubtype();
        } else {
            return new RichInputMethodSubtype(subtype);
        }
    }

    // Dummy no language QWERTY subtype. See {@link R.xml.method}.
    private static final int SUBTYPE_ID_OF_DUMMY_NO_LANGUAGE_SUBTYPE = 0xdde0bfd3;
    private static final String EXTRA_VALUE_OF_DUMMY_NO_LANGUAGE_SUBTYPE =
+1 −1
Original line number Diff line number Diff line
@@ -260,7 +260,7 @@ public final class AndroidSpellCheckerService extends SpellCheckerService
        final KeyboardLayoutSet.Builder builder = new KeyboardLayoutSet.Builder(this, editorInfo);
        builder.setKeyboardGeometry(
                SPELLCHECKER_DUMMY_KEYBOARD_WIDTH, SPELLCHECKER_DUMMY_KEYBOARD_HEIGHT);
        builder.setSubtype(new RichInputMethodSubtype(subtype));
        builder.setSubtype(RichInputMethodSubtype.getRichInputMethodSubtype(subtype));
        builder.setIsSpellChecker(true /* isSpellChecker */);
        builder.disableTouchPositionCorrectionData();
        return builder.build();
+1 −1
Original line number Diff line number Diff line
@@ -159,7 +159,7 @@ public abstract class KeyboardLayoutSetTestsBase extends AndroidTestCase {
        final int keyboardHeight = ResourceUtils.getDefaultKeyboardHeight(res);
        final Builder builder = new Builder(context, editorInfo);
        builder.setKeyboardGeometry(keyboardWidth, keyboardHeight)
                .setSubtype(new RichInputMethodSubtype(subtype))
                .setSubtype(RichInputMethodSubtype.getRichInputMethodSubtype(subtype))
                .setVoiceInputKeyEnabled(voiceInputKeyEnabled)
                .setLanguageSwitchKeyEnabled(languageSwitchKeyEnabled)
                .setSplitLayoutEnabledByUser(splitLayoutEnabled);
+7 −0
Original line number Diff line number Diff line
@@ -318,4 +318,11 @@ public class RichInputMethodSubtypeTests extends AndroidTestCase {
    public void testAdditionalSubtypeForSpacebarInFrench() {
        testsAdditionalSubtypesForSpacebar.runInLocale(mRes, Locale.FRENCH);
    }

    public void testRichInputMethodSubtypeForNullInputMethodSubtype() {
        RichInputMethodSubtype subtype = RichInputMethodSubtype.getRichInputMethodSubtype(null);
        assertNotNull(subtype);
        assertEquals("zz", subtype.getRawSubtype().getLocale());
        assertEquals("keyboard", subtype.getRawSubtype().getMode());
    }
}