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

Commit b6e128cc authored by Jean Chalard's avatar Jean Chalard Committed by Android (Google) Code Review
Browse files

Merge "[IL69.1] Move a static method to a utility class."

parents 0c725290 1d6e647a
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import com.android.inputmethod.keyboard.internal.KeyboardIconsSet;
import com.android.inputmethod.keyboard.internal.KeyboardParams;
import com.android.inputmethod.latin.Constants;
import com.android.inputmethod.latin.utils.CollectionUtils;
import com.android.inputmethod.latin.utils.CoordinateUtils;

/**
 * Loads an XML description of a keyboard and stores the attributes of the keys. A keyboard
@@ -217,4 +218,20 @@ public class Keyboard {
        final int adjustedY = Math.max(0, Math.min(y, mOccupiedHeight - 1));
        return mProximityInfo.getNearestKeys(adjustedX, adjustedY);
    }

    public int[] getCoordinates(final int[] codePoints) {
        final int length = codePoints.length;
        final int[] coordinates = CoordinateUtils.newCoordinateArray(length);
        for (int i = 0; i < length; ++i) {
            final Key key = getKey(codePoints[i]);
            if (null != key) {
                CoordinateUtils.setXYInArray(coordinates, i,
                        key.getX() + key.getWidth() / 2, key.getY() + key.getHeight() / 2);
            } else {
                CoordinateUtils.setXYInArray(coordinates, i,
                        Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE);
            }
        }
        return coordinates;
    }
}
+6 −17
Original line number Diff line number Diff line
@@ -59,7 +59,6 @@ import com.android.inputmethod.accessibility.AccessibleKeyboardViewProxy;
import com.android.inputmethod.annotations.UsedForTesting;
import com.android.inputmethod.compat.InputMethodServiceCompatUtils;
import com.android.inputmethod.dictionarypack.DictionaryPackConstants;
import com.android.inputmethod.keyboard.Key;
import com.android.inputmethod.keyboard.Keyboard;
import com.android.inputmethod.keyboard.KeyboardActionListener;
import com.android.inputmethod.keyboard.KeyboardId;
@@ -1206,24 +1205,14 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
     * @return x,y coordinates for this keyboard, as a flattened array.
     */
    public int[] getCoordinatesForCurrentKeyboard(final int[] codePoints) {
        return getCoordinatesForKeyboard(codePoints, mKeyboardSwitcher.getKeyboard());
    }

    public static int[] getCoordinatesForKeyboard(final int[] codePoints, final Keyboard keyboard) {
        final int length = codePoints.length;
        final int[] coordinates = CoordinateUtils.newCoordinateArray(length);
        Key key;
        for (int i = 0; i < length; ++i) {
            if (keyboard != null && (key = keyboard.getKey(codePoints[i])) != null) {
                CoordinateUtils.setXYInArray(coordinates, i,
                        key.getX() + key.getWidth() / 2, key.getY() + key.getHeight() / 2);
            } else {
                CoordinateUtils.setXYInArray(coordinates, i,
        final Keyboard keyboard = mKeyboardSwitcher.getKeyboard();
        if (null == keyboard) {
            return CoordinateUtils.newCoordinateArray(codePoints.length,
                    Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE);
        } else {
            return keyboard.getCoordinates(codePoints);
        }
    }
        return coordinates;
    }

    // Callback for the {@link SuggestionStripView}, to call when the "add to dictionary" hint is
    // pressed.
+10 −4
Original line number Diff line number Diff line
@@ -28,12 +28,13 @@ import android.view.textservice.SuggestionsInfo;
import android.view.textservice.TextInfo;

import com.android.inputmethod.compat.SuggestionsInfoCompatUtils;
import com.android.inputmethod.keyboard.Keyboard;
import com.android.inputmethod.latin.Constants;
import com.android.inputmethod.latin.Dictionary;
import com.android.inputmethod.latin.LatinIME;
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
import com.android.inputmethod.latin.WordComposer;
import com.android.inputmethod.latin.spellcheck.AndroidSpellCheckerService.SuggestionsGatherer;
import com.android.inputmethod.latin.utils.CoordinateUtils;
import com.android.inputmethod.latin.utils.LocaleUtils;
import com.android.inputmethod.latin.utils.StringUtils;

@@ -314,9 +315,14 @@ public abstract class AndroidWordLevelSpellCheckerSession extends Session {
                }
                final WordComposer composer = new WordComposer();
                final int[] codePoints = StringUtils.toCodePointArray(text);
                composer.setComposingWord(codePoints,
                        LatinIME.getCoordinatesForKeyboard(codePoints, dictInfo.mKeyboard),
                        null /* previousWord */);
                final int[] coordinates;
                if (null == dictInfo.mKeyboard) {
                    coordinates = CoordinateUtils.newCoordinateArray(codePoints.length,
                            Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE);
                } else {
                    coordinates = dictInfo.mKeyboard.getCoordinates(codePoints);
                }
                composer.setComposingWord(codePoints, coordinates, null /* previousWord */);
                // TODO: make a spell checker option to block offensive words or not
                final ArrayList<SuggestedWordInfo> suggestions =
                        dictInfo.mDictionary.getSuggestions(composer, prevWord,
+10 −1
Original line number Diff line number Diff line
@@ -53,6 +53,15 @@ public final class CoordinateUtils {
      return new int[ELEMENT_SIZE * arraySize];
    }

    public static int[] newCoordinateArray(final int arraySize,
        final int defaultX, final int defaultY) {
      final int[] result = new int[ELEMENT_SIZE * arraySize];
      for (int i = 0; i < arraySize; ++i) {
        setXYInArray(result, i, defaultX, defaultY);
      }
      return result;
    }

    public static int xFromArray(final int[] coordsArray, final int index) {
        return coordsArray[ELEMENT_SIZE * index + INDEX_X];
    }
+4 −3
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.inputmethod.latin;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;

import com.android.inputmethod.keyboard.Keyboard;
import com.android.inputmethod.latin.utils.StringUtils;

/**
@@ -37,7 +38,7 @@ public class WordComposerTests extends AndroidTestCase {
        final String STR_WITHIN_BMP = "abcdef";
        final int[] CODEPOINTS_WITHIN_BMP = StringUtils.toCodePointArray(STR_WITHIN_BMP);
        final int[] COORDINATES_WITHIN_BMP =
                LatinIME.getCoordinatesForKeyboard(CODEPOINTS_WITHIN_BMP, null);
                Keyboard.getCoordinatesWithoutKeyboard(CODEPOINTS_WITHIN_BMP);
        final String PREVWORD = "prevword";
        wc.setComposingWord(CODEPOINTS_WITHIN_BMP, COORDINATES_WITHIN_BMP, PREVWORD);
        assertEquals(wc.size(),
@@ -69,8 +70,8 @@ public class WordComposerTests extends AndroidTestCase {
        final String STR_WITH_SUPPLEMENTARY_CHAR = "abcde\uD861\uDED7fgh";
        final int[] CODEPOINTS_WITH_SUPPLEMENTARY_CHAR =
                StringUtils.toCodePointArray(STR_WITH_SUPPLEMENTARY_CHAR);
        final int[] COORDINATES_WITH_SUPPLEMENTARY_CHAR = LatinIME.getCoordinatesForKeyboard(
                CODEPOINTS_WITH_SUPPLEMENTARY_CHAR, null);
        final int[] COORDINATES_WITH_SUPPLEMENTARY_CHAR = Keyboard.getCoordinatesWithoutKeyboard(
                CODEPOINTS_WITH_SUPPLEMENTARY_CHAR);
        wc.setComposingWord(CODEPOINTS_WITH_SUPPLEMENTARY_CHAR, COORDINATES_WITH_SUPPLEMENTARY_CHAR,
                null /* previousWord */);
        assertEquals(wc.size(), CODEPOINTS_WITH_SUPPLEMENTARY_CHAR.length);