diff options
| author | 2021-05-21 17:37:00 +0800 | |
|---|---|---|
| committer | 2021-05-21 17:58:31 +0800 | |
| commit | 2648035bda58b95dfe6c9c01da2c47027aac0f1d (patch) | |
| tree | e8135c734d45eda0e3433d8ea0df515ee7e1a84a | |
| parent | 1d2868c45b52c68ef28b3a84b13dcc7347461c7f (diff) | |
Fix a bug in sentence detection when input is too long.
When the unchecked length of the current sentence is too long, the
spell checker should check the first MAX_SENTENCE_LGNTH characters of
the unchecked part. In this case, detectSentenceBOundary should return
[textChangesStart, textChangeStart + MAX_SENTENCE_LENGTH)
Fix: 188875278
Test: manual test
Change-Id: I31847aed2d564f7bc1ff43c83adae3bb7c99c0d1
| -rw-r--r-- | core/java/android/widget/SpellChecker.java | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/core/java/android/widget/SpellChecker.java b/core/java/android/widget/SpellChecker.java index 7c04b1cc195b..2280d7cfd11c 100644 --- a/core/java/android/widget/SpellChecker.java +++ b/core/java/android/widget/SpellChecker.java @@ -821,7 +821,7 @@ public class SpellChecker implements SpellCheckerSessionListener { // The offset should be rounded up to word boundary. int uncheckedLength = sentenceEnd - textChangeStart; if (uncheckedLength > MAX_SENTENCE_LENGTH) { - sentenceEnd = findSeparator(sequence, sentenceStart + MAX_SENTENCE_LENGTH, + sentenceEnd = findSeparator(sequence, textChangeStart + MAX_SENTENCE_LENGTH, sentenceEnd); sentenceStart = roundUpToWordStart(sequence, textChangeStart, sentenceStart); } else { @@ -829,7 +829,7 @@ public class SpellChecker implements SpellCheckerSessionListener { sentenceStart); } } - return new Range(sentenceStart, sentenceEnd); + return new Range<>(sentenceStart, Math.max(sentenceStart, sentenceEnd)); } private int roundUpToWordStart(CharSequence sequence, int position, int frontBoundary) { |