Merge "Remove mIsExpectingUpdateSelection."

main
Jean Chalard 2013-10-17 06:55:53 +00:00 committed by Android (Google) Code Review
commit 8447409c77
2 changed files with 7 additions and 25 deletions

View File

@ -196,9 +196,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
private int mLastSelectionStart = NOT_A_CURSOR_POSITION; private int mLastSelectionStart = NOT_A_CURSOR_POSITION;
private int mLastSelectionEnd = NOT_A_CURSOR_POSITION; private int mLastSelectionEnd = NOT_A_CURSOR_POSITION;
// Whether we are expecting an onUpdateSelection event to fire. If it does when we don't
// "expect" it, it means the user actually moved the cursor.
private boolean mExpectingUpdateSelection;
private int mDeleteCount; private int mDeleteCount;
private long mLastKeyTime; private long mLastKeyTime;
private final TreeSet<Long> mCurrentlyPressedHardwareKeys = CollectionUtils.newTreeSet(); private final TreeSet<Long> mCurrentlyPressedHardwareKeys = CollectionUtils.newTreeSet();
@ -1083,7 +1080,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) { if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
ResearchLogger.latinIME_onUpdateSelection(mLastSelectionStart, mLastSelectionEnd, ResearchLogger.latinIME_onUpdateSelection(mLastSelectionStart, mLastSelectionEnd,
oldSelStart, oldSelEnd, newSelStart, newSelEnd, composingSpanStart, oldSelStart, oldSelEnd, newSelStart, newSelEnd, composingSpanStart,
composingSpanEnd, mExpectingUpdateSelection, mConnection); composingSpanEnd, mConnection);
} }
final boolean selectionChanged = mLastSelectionStart != newSelStart final boolean selectionChanged = mLastSelectionStart != newSelStart
@ -1102,14 +1099,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// TODO: revisit this when LatinIME supports hardware keyboards. // TODO: revisit this when LatinIME supports hardware keyboards.
// NOTE: the test harness subclasses LatinIME and overrides isInputViewShown(). // NOTE: the test harness subclasses LatinIME and overrides isInputViewShown().
// TODO: find a better way to simulate actual execution. // TODO: find a better way to simulate actual execution.
if (isInputViewShown() && !mExpectingUpdateSelection if (isInputViewShown()
&& !mConnection.isBelatedExpectedUpdate(oldSelStart, newSelStart)) { && !mConnection.isBelatedExpectedUpdate(oldSelStart, newSelStart)) {
// TAKE CARE: there is a race condition when we enter this test even when the user
// did not explicitly move the cursor. This happens when typing fast, where two keys
// turn this flag on in succession and both onUpdateSelection() calls arrive after
// the second one - the first call successfully avoids this test, but the second one
// enters. For the moment we rely on noComposingSpan to further reduce the impact.
// TODO: the following is probably better done in resetEntireInputState(). // TODO: the following is probably better done in resetEntireInputState().
// it should only happen when the cursor moved, and the very purpose of the // it should only happen when the cursor moved, and the very purpose of the
// test below is to narrow down whether this happened or not. Likewise with // test below is to narrow down whether this happened or not. Likewise with
@ -1154,7 +1145,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
mRecapitalizeStatus.deactivate(); mRecapitalizeStatus.deactivate();
mKeyboardSwitcher.updateShiftState(); mKeyboardSwitcher.updateShiftState();
} }
mExpectingUpdateSelection = false;
// Make a note of the cursor position // Make a note of the cursor position
mLastSelectionStart = newSelStart; mLastSelectionStart = newSelStart;
@ -1733,7 +1723,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
} }
handleCharacter(primaryCode, keyX, keyY, spaceState); handleCharacter(primaryCode, keyX, keyY, spaceState);
} }
mExpectingUpdateSelection = true;
return didAutoCorrect; return didAutoCorrect;
} }
@ -1799,7 +1788,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
} else { } else {
commitTyped(LastComposedWord.NOT_A_SEPARATOR); commitTyped(LastComposedWord.NOT_A_SEPARATOR);
} }
mExpectingUpdateSelection = true;
} }
final int codePointBeforeCursor = mConnection.getCodePointBeforeCursor(); final int codePointBeforeCursor = mConnection.getCodePointBeforeCursor();
if (Character.isLetterOrDigit(codePointBeforeCursor) if (Character.isLetterOrDigit(codePointBeforeCursor)
@ -1989,7 +1977,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
mWordComposer.setBatchInputWord(batchInputText); mWordComposer.setBatchInputWord(batchInputText);
mConnection.setComposingText(batchInputText, 1); mConnection.setComposingText(batchInputText, 1);
} }
mExpectingUpdateSelection = true;
mConnection.endBatchEdit(); mConnection.endBatchEdit();
if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) { if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
ResearchLogger.latinIME_onEndBatchInput(batchInputText, 0, suggestedWords); ResearchLogger.latinIME_onEndBatchInput(batchInputText, 0, suggestedWords);
@ -2043,9 +2030,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
} }
private void handleBackspace(final int spaceState) { private void handleBackspace(final int spaceState) {
// We revert these in this method if the deletion doesn't happen. // We revert this in this method if the deletion doesn't happen.
mDeleteCount++; mDeleteCount++;
mExpectingUpdateSelection = true;
// In many cases, we may have to put the keyboard in auto-shift state again. However // In many cases, we may have to put the keyboard in auto-shift state again. However
// we want to wait a few milliseconds before doing it to avoid the keyboard flashing // we want to wait a few milliseconds before doing it to avoid the keyboard flashing
@ -2138,10 +2124,9 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
} }
final int codePointBeforeCursor = mConnection.getCodePointBeforeCursor(); final int codePointBeforeCursor = mConnection.getCodePointBeforeCursor();
if (codePointBeforeCursor == Constants.NOT_A_CODE) { if (codePointBeforeCursor == Constants.NOT_A_CODE) {
// Nothing to delete before the cursor. We have to revert the deletion states // Nothing to delete before the cursor. We have to revert the deletion count
// that were updated at the beginning of this method. // that was updated at the beginning of this method.
mDeleteCount--; mDeleteCount--;
mExpectingUpdateSelection = false;
return; return;
} }
final int lengthToDelete = final int lengthToDelete =
@ -2650,7 +2635,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
ResearchLogger.latinIme_commitCurrentAutoCorrection(typedWord, autoCorrection, ResearchLogger.latinIme_commitCurrentAutoCorrection(typedWord, autoCorrection,
separator, mWordComposer.isBatchMode(), suggestedWords); separator, mWordComposer.isBatchMode(), suggestedWords);
} }
mExpectingUpdateSelection = true;
commitChosenWord(autoCorrection, LastComposedWord.COMMIT_TYPE_DECIDED_WORD, commitChosenWord(autoCorrection, LastComposedWord.COMMIT_TYPE_DECIDED_WORD,
separator); separator);
if (!typedWord.equals(autoCorrection)) { if (!typedWord.equals(autoCorrection)) {
@ -2721,7 +2705,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// typed word. // typed word.
final String replacedWord = mWordComposer.getTypedWord(); final String replacedWord = mWordComposer.getTypedWord();
LatinImeLogger.logOnManualSuggestion(replacedWord, suggestion, index, suggestedWords); LatinImeLogger.logOnManualSuggestion(replacedWord, suggestion, index, suggestedWords);
mExpectingUpdateSelection = true;
commitChosenWord(suggestion, LastComposedWord.COMMIT_TYPE_MANUAL_PICK, commitChosenWord(suggestion, LastComposedWord.COMMIT_TYPE_MANUAL_PICK,
LastComposedWord.NOT_A_SEPARATOR); LastComposedWord.NOT_A_SEPARATOR);
if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) { if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {

View File

@ -1161,8 +1161,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
public static void latinIME_onUpdateSelection(final int lastSelectionStart, public static void latinIME_onUpdateSelection(final int lastSelectionStart,
final int lastSelectionEnd, final int oldSelStart, final int oldSelEnd, final int lastSelectionEnd, final int oldSelStart, final int oldSelEnd,
final int newSelStart, final int newSelEnd, final int composingSpanStart, final int newSelStart, final int newSelEnd, final int composingSpanStart,
final int composingSpanEnd, final boolean expectingUpdateSelection, final int composingSpanEnd, final RichInputConnection connection) {
final RichInputConnection connection) {
String word = ""; String word = "";
if (connection != null) { if (connection != null) {
TextRange range = connection.getWordRangeAtCursor(WHITESPACE_SEPARATORS, 1); TextRange range = connection.getWordRangeAtCursor(WHITESPACE_SEPARATORS, 1);
@ -1174,7 +1173,7 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang
final String scrubbedWord = researchLogger.scrubWord(word); final String scrubbedWord = researchLogger.scrubWord(word);
researchLogger.enqueueEvent(LOGSTATEMENT_LATINIME_ONUPDATESELECTION, lastSelectionStart, researchLogger.enqueueEvent(LOGSTATEMENT_LATINIME_ONUPDATESELECTION, lastSelectionStart,
lastSelectionEnd, oldSelStart, oldSelEnd, newSelStart, newSelEnd, lastSelectionEnd, oldSelStart, oldSelEnd, newSelStart, newSelEnd,
composingSpanStart, composingSpanEnd, expectingUpdateSelection, composingSpanStart, composingSpanEnd, false /* expectingUpdateSelection */,
false /* expectingUpdateSelectionFromLogger */, scrubbedWord); false /* expectingUpdateSelectionFromLogger */, scrubbedWord);
} }