Revert "Don't send the same values to onUpdateSelection repeatedly"

This reverts commit c743cb9477.

Reason for revert:
This workaround is no longer necessary [1][2].

 [1]: I56f3198e54f689adc9541f2c2644ee19bcc6deed
      e345e90a01
 [2]: Ic84fb070e0ff21dffb7e6c9bbdc6320eb5946fd9
      1046a22aae6d6c0ee21aca7446540a9d27902559

Fix: 183474466
Test: atest CtsInputMethodTestCases:InProcessImeTest
Test: atest CtsAccessibilityServiceTestCases:AccessibilityImeTest#testOnUpdateSelectionForInProcessA11yIme
Change-Id: Ie5d00bbc51b66f1d6b50969f03d1b3e3bca5e9da
This commit is contained in:
Yohei Yukawa
2022-06-21 04:58:14 +00:00
parent 5f1bc821ac
commit 2cc4677f2c
2 changed files with 4 additions and 14 deletions

View File

@@ -2987,11 +2987,6 @@ public class InputMethodService extends AbstractInputMethodService {
* the text. This is called whether or not the input method has requested
* extracted text updates, although if so it will not receive this call
* if the extracted text has changed as well.
*
* <p>Be careful about changing the text in reaction to this call with
* methods such as setComposingText, commitText or
* deleteSurroundingText. If the cursor moves as a result, this method
* will be called again, which may result in an infinite loop.
*
* <p>The default implementation takes care of updating the cursor in
* the extract text, if it is being shown.

View File

@@ -2675,19 +2675,14 @@ public final class InputMethodManager {
if (DEBUG) {
Log.v(TAG, "SELECTION CHANGE: " + mCurrentInputMethodSession);
}
final int oldSelStart = mCursorSelStart;
final int oldSelEnd = mCursorSelEnd;
// Update internal values before sending updateSelection to the IME, because
// if it changes the text within its onUpdateSelection handler in a way that
// does not move the cursor we don't want to call it again with the same values.
mCurrentInputMethodSession.updateSelection(mCursorSelStart, mCursorSelEnd, selStart,
selEnd, candidatesStart, candidatesEnd);
forAccessibilitySessionsLocked(wrapper -> wrapper.updateSelection(mCursorSelStart,
mCursorSelEnd, selStart, selEnd, candidatesStart, candidatesEnd));
mCursorSelStart = selStart;
mCursorSelEnd = selEnd;
mCursorCandStart = candidatesStart;
mCursorCandEnd = candidatesEnd;
mCurrentInputMethodSession.updateSelection(
oldSelStart, oldSelEnd, selStart, selEnd, candidatesStart, candidatesEnd);
forAccessibilitySessionsLocked(wrapper -> wrapper.updateSelection(oldSelStart,
oldSelEnd, selStart, selEnd, candidatesStart, candidatesEnd));
}
}
}