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

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

Fix NPE where the current subtype is null

Bug: 6847999
parent 19ac19e5
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -90,6 +90,13 @@ public class ImfUtils {
        return false;
        return false;
    }
    }


    public static InputMethodSubtype getCurrentInputMethodSubtype(Context context,
            InputMethodSubtype defaultSubtype) {
        final InputMethodManager imm = getInputMethodManager(context);
        final InputMethodSubtype currentSubtype = imm.getCurrentInputMethodSubtype();
        return (currentSubtype != null) ? currentSubtype : defaultSubtype;
    }

    public static boolean hasMultipleEnabledIMEsOrSubtypes(Context context,
    public static boolean hasMultipleEnabledIMEsOrSubtypes(Context context,
            final boolean shouldIncludeAuxiliarySubtypes) {
            final boolean shouldIncludeAuxiliarySubtypes) {
        final InputMethodManager imm = getInputMethodManager(context);
        final InputMethodManager imm = getInputMethodManager(context);
+3 −3
Original line number Original line Diff line number Diff line
@@ -98,9 +98,9 @@ public class SubtypeSwitcher {
        mConnectivityManager = (ConnectivityManager) service.getSystemService(
        mConnectivityManager = (ConnectivityManager) service.getSystemService(
                Context.CONNECTIVITY_SERVICE);
                Context.CONNECTIVITY_SERVICE);
        mCurrentSystemLocale = mResources.getConfiguration().locale;
        mCurrentSystemLocale = mResources.getConfiguration().locale;
        mCurrentSubtype = mImm.getCurrentInputMethodSubtype();
        mNoLanguageSubtype = ImfUtils.findSubtypeByLocaleAndKeyboardLayoutSet(
        mNoLanguageSubtype = ImfUtils.findSubtypeByLocaleAndKeyboardLayoutSet(
                service, SubtypeLocale.NO_LANGUAGE, SubtypeLocale.QWERTY);
                service, SubtypeLocale.NO_LANGUAGE, SubtypeLocale.QWERTY);
        mCurrentSubtype = ImfUtils.getCurrentInputMethodSubtype(service, mNoLanguageSubtype);
        if (mNoLanguageSubtype == null) {
        if (mNoLanguageSubtype == null) {
            throw new RuntimeException("Can't find no lanugage with QWERTY subtype");
            throw new RuntimeException("Can't find no lanugage with QWERTY subtype");
        }
        }
@@ -113,7 +113,7 @@ public class SubtypeSwitcher {
    // Only configuration changed event is allowed to call this because this is heavy.
    // Only configuration changed event is allowed to call this because this is heavy.
    private void updateAllParameters() {
    private void updateAllParameters() {
        mCurrentSystemLocale = mResources.getConfiguration().locale;
        mCurrentSystemLocale = mResources.getConfiguration().locale;
        updateSubtype(mImm.getCurrentInputMethodSubtype());
        updateSubtype(ImfUtils.getCurrentInputMethodSubtype(mService, mNoLanguageSubtype));
        updateParametersOnStartInputView();
        updateParametersOnStartInputView();
    }
    }


@@ -142,7 +142,7 @@ public class SubtypeSwitcher {
                        + currentSubtype.getLocale() + "/" + currentSubtype.getExtraValue());
                        + currentSubtype.getLocale() + "/" + currentSubtype.getExtraValue());
                Log.w(TAG, "Last subtype was disabled. Update to the current one.");
                Log.w(TAG, "Last subtype was disabled. Update to the current one.");
            }
            }
            updateSubtype(mImm.getCurrentInputMethodSubtype());
            updateSubtype(ImfUtils.getCurrentInputMethodSubtype(mService, mNoLanguageSubtype));
        }
        }
    }
    }