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

Commit 2cc4677f authored by Yohei Yukawa's avatar Yohei Yukawa
Browse files

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

This reverts commit c743cb94.

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

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

Fix: 183474466
Test: atest CtsInputMethodTestCases:InProcessImeTest
Test: atest CtsAccessibilityServiceTestCases:AccessibilityImeTest#testOnUpdateSelectionForInProcessA11yIme
Change-Id: Ie5d00bbc51b66f1d6b50969f03d1b3e3bca5e9da
parent 5f1bc821
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -2988,11 +2988,6 @@ public class InputMethodService extends AbstractInputMethodService {
     * 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.
     */
+4 −9
Original line number Diff line number Diff line
@@ -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));
            }
        }
    }