Skip to content
Snippets Groups Projects
Commit 6fbe83be authored by Jean Chalard's avatar Jean Chalard
Browse files

[IL53] Fix a wrong test.

This test was intended only for cases without a selection, and as
a safety net for cases where the app would pretend the cursor
is at N but we can get P chars from the editor where P > N.

When there is a selection, this is wrong. In the practice it works
because these values are not used in this case, but it's still wrong.

The case where P > N is arguable, but actually I see little reason
to trust the getTextBeforeCursor() method more than the
onUpdate selection method. Plus in the practice, I don't think
we are aware of any app with this bug, and it's probably not a
great idea to be too robust about this as it may encourage wrong
values sent to onUpdateSelection.

Change-Id: I42f2065d7aee668074e6b8e40b259da7e88e16e1
parent 958e4520
No related branches found
No related tags found
No related merge requests found
...@@ -174,13 +174,15 @@ public final class RichInputConnection { ...@@ -174,13 +174,15 @@ public final class RichInputConnection {
} }
final int lengthOfTextBeforeCursor = mCommittedTextBeforeComposingText.length(); final int lengthOfTextBeforeCursor = mCommittedTextBeforeComposingText.length();
if (lengthOfTextBeforeCursor > newSelStart if (lengthOfTextBeforeCursor > newSelStart
|| (lengthOfTextBeforeCursor < Constants.EDITOR_CONTENTS_CACHE_SIZE || (newSelStart != lengthOfTextBeforeCursor
&& lengthOfTextBeforeCursor < Constants.EDITOR_CONTENTS_CACHE_SIZE
&& newSelStart < Constants.EDITOR_CONTENTS_CACHE_SIZE)) { && newSelStart < Constants.EDITOR_CONTENTS_CACHE_SIZE)) {
// newSelStart and newSelEnd may be lying -- when rotating the device (probably a // newSelStart and newSelEnd may be lying -- when rotating the device (probably a
// framework bug). If we have less chars than we asked for, then we know how many chars // framework bug). If the values don't agree and we have less chars than we asked
// we have, and if we got more than newSelStart says, then we know it was lying. In both // for, then we know how many chars we have. If we got more than newSelStart says, then
// cases the length is more reliable. Note that we only have to check newSelStart (not // we also know it was lying. In both cases the length is more reliable. Note that we
// newSelEnd) since if newSelEnd is wrong, the newSelStart will be wrong as well. // only have to check newSelStart (not newSelEnd) since if newSelEnd is wrong, then
// newSelStart will be wrong as well.
mExpectedSelStart = lengthOfTextBeforeCursor; mExpectedSelStart = lengthOfTextBeforeCursor;
mExpectedSelEnd = lengthOfTextBeforeCursor; mExpectedSelEnd = lengthOfTextBeforeCursor;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment