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

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

Fix possible NPE caused while monkey test

Bug: 7269036
Change-Id: I9054b33ad3c8996cac3ee5f0e9c01ba8ceea4971
parent 15281adb
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -390,7 +390,11 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
    }

    public int getManualCapsMode() {
        switch (getKeyboard().mId.mElementId) {
        final Keyboard keyboard = getKeyboard();
        if (keyboard == null) {
            return WordComposer.CAPS_MODE_OFF;
        }
        switch (keyboard.mId.mElementId) {
        case KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCKED:
        case KeyboardId.ELEMENT_ALPHABET_SHIFT_LOCK_SHIFTED:
            return WordComposer.CAPS_MODE_MANUAL_SHIFT_LOCKED;
+6 −2
Original line number Diff line number Diff line
@@ -1910,6 +1910,10 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
    }

    private SuggestedWords getSuggestedWords(final int sessionId) {
        final Keyboard keyboard = mKeyboardSwitcher.getKeyboard();
        if (keyboard == null) {
            return SuggestedWords.EMPTY;
        }
        final String typedWord = mWordComposer.getTypedWord();
        // Get the word on which we should search the bigrams. If we are composing a word, it's
        // whatever is *before* the half-committed word in the buffer, hence 2; if we aren't, we
@@ -1919,8 +1923,8 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
                mConnection.getNthPreviousWord(mCurrentSettings.mWordSeparators,
                mWordComposer.isComposingWord() ? 2 : 1);
        final SuggestedWords suggestedWords = mSuggest.getSuggestedWords(mWordComposer,
                prevWord, mKeyboardSwitcher.getKeyboard().getProximityInfo(),
                mCurrentSettings.mCorrectionEnabled, sessionId);
                prevWord, keyboard.getProximityInfo(), mCurrentSettings.mCorrectionEnabled,
                sessionId);
        return maybeRetrieveOlderSuggestions(typedWord, suggestedWords);
    }

+10 −8
Original line number Diff line number Diff line
@@ -177,14 +177,16 @@ public final class WordComposer {
     * Internal method to retrieve reasonable proximity info for a character.
     */
    private void addKeyInfo(final int codePoint, final Keyboard keyboard) {
        final Key key = keyboard.getKey(codePoint);
        if (key != null) {
            final int x = key.mX + key.mWidth / 2;
            final int y = key.mY + key.mHeight / 2;
            add(codePoint, x, y);
            return;
        final int x, y;
        final Key key;
        if (keyboard != null && (key = keyboard.getKey(codePoint)) != null) {
            x = key.mX + key.mWidth / 2;
            y = key.mY + key.mHeight / 2;
        } else {
            x = Constants.NOT_A_COORDINATE;
            y = Constants.NOT_A_COORDINATE;
        }
        add(codePoint, Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE);
        add(codePoint, x, y);
    }

    /**
@@ -195,7 +197,7 @@ public final class WordComposer {
        reset();
        final int length = word.length();
        for (int i = 0; i < length; i = Character.offsetByCodePoints(word, i, 1)) {
            int codePoint = Character.codePointAt(word, i);
            final int codePoint = Character.codePointAt(word, i);
            addKeyInfo(codePoint, keyboard);
        }
        mIsResumed = true;