diff options
author | 2014-05-16 07:47:52 +0000 | |
---|---|---|
committer | 2014-05-16 07:47:52 +0000 | |
commit | f1b3518d7181a56d4b50f32e21438003edfd4355 (patch) | |
tree | 8e366e4187c6fbc7d887b64793cc35463a458982 /java/src | |
parent | cfd3093362e2447bca948b94ceabba404b376b4b (diff) | |
parent | 34873a66f03e0b9945474213fa2bc48cc272a7ca (diff) | |
download | latinime-f1b3518d7181a56d4b50f32e21438003edfd4355.tar.gz latinime-f1b3518d7181a56d4b50f32e21438003edfd4355.tar.xz latinime-f1b3518d7181a56d4b50f32e21438003edfd4355.zip |
Merge "Fix: StringIndexOutOfBoundsException."
Diffstat (limited to 'java/src')
4 files changed, 16 insertions, 14 deletions
diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java index db0a8a81c..71355f418 100644 --- a/java/src/com/android/inputmethod/latin/Suggest.java +++ b/java/src/com/android/inputmethod/latin/Suggest.java @@ -94,8 +94,8 @@ public final class Suggest { final boolean blockOffensiveWords, final boolean isCorrectionEnabled, final int[] additionalFeaturesOptions, final int sequenceNumber, final OnGetSuggestedWordsCallback callback) { - final int trailingSingleQuotesCount = wordComposer.trailingSingleQuotesCount(); final String typedWord = wordComposer.getTypedWord(); + final int trailingSingleQuotesCount = StringUtils.getTrailingSingleQuotesCount(typedWord); final String consideredWord = trailingSingleQuotesCount > 0 ? typedWord.substring(0, typedWord.length() - trailingSingleQuotesCount) : typedWord; diff --git a/java/src/com/android/inputmethod/latin/WordComposer.java b/java/src/com/android/inputmethod/latin/WordComposer.java index ac6972928..9cf71c7f4 100644 --- a/java/src/com/android/inputmethod/latin/WordComposer.java +++ b/java/src/com/android/inputmethod/latin/WordComposer.java @@ -149,7 +149,8 @@ public final class WordComposer { public int copyCodePointsExceptTrailingSingleQuotesAndReturnCodePointCount( final int[] destination) { // lastIndex is exclusive - final int lastIndex = mTypedWordCache.length() - trailingSingleQuotesCount(); + final int lastIndex = mTypedWordCache.length() + - StringUtils.getTrailingSingleQuotesCount(mTypedWordCache); if (lastIndex <= 0) { // The string is empty or contains only single quotes. return 0; @@ -331,15 +332,6 @@ public final class WordComposer { return mIsFirstCharCapitalized; } - public int trailingSingleQuotesCount() { - final int lastIndex = mTypedWordCache.length() - 1; - int i = lastIndex; - while (i >= 0 && mTypedWordCache.charAt(i) == Constants.CODE_SINGLE_QUOTE) { - --i; - } - return lastIndex - i; - } - /** * Whether or not all of the user typed chars are upper case * @return true if all user typed chars are upper case, false otherwise diff --git a/java/src/com/android/inputmethod/latin/utils/DistracterFilter.java b/java/src/com/android/inputmethod/latin/utils/DistracterFilter.java index 0a0379982..dc3e9bf71 100644 --- a/java/src/com/android/inputmethod/latin/utils/DistracterFilter.java +++ b/java/src/com/android/inputmethod/latin/utils/DistracterFilter.java @@ -86,9 +86,10 @@ public class DistracterFilter { coordinates = mKeyboard.getCoordinates(codePoints); composer.setComposingWord(codePoints, coordinates, prevWord); - final int trailingSingleQuotesCount = composer.trailingSingleQuotesCount(); - final String consideredWord = trailingSingleQuotesCount > 0 ? testedWord.substring(0, - testedWord.length() - trailingSingleQuotesCount) : testedWord; + final int trailingSingleQuotesCount = StringUtils.getTrailingSingleQuotesCount(testedWord); + final String consideredWord = trailingSingleQuotesCount > 0 ? + testedWord.substring(0, testedWord.length() - trailingSingleQuotesCount) : + testedWord; final AsyncResultHolder<Boolean> holder = new AsyncResultHolder<Boolean>(); final OnGetSuggestedWordsCallback callback = new OnGetSuggestedWordsCallback() { @Override diff --git a/java/src/com/android/inputmethod/latin/utils/StringUtils.java b/java/src/com/android/inputmethod/latin/utils/StringUtils.java index 374badc19..73ac9a573 100644 --- a/java/src/com/android/inputmethod/latin/utils/StringUtils.java +++ b/java/src/com/android/inputmethod/latin/utils/StringUtils.java @@ -538,6 +538,15 @@ public final class StringUtils { ? casedText.codePointAt(0) : CODE_UNSPECIFIED; } + public static int getTrailingSingleQuotesCount(final CharSequence charSequence) { + final int lastIndex = charSequence.length() - 1; + int i = lastIndex; + while (i >= 0 && charSequence.charAt(i) == Constants.CODE_SINGLE_QUOTE) { + --i; + } + return lastIndex - i; + } + @UsedForTesting public static class Stringizer<E> { public String stringize(final E element) { |