[IL128] Remove passing some handlers.

Bug: 8636060
Change-Id: I088be9a7555265ca097667523defd73be4cbe37f
main
Jean Chalard 2014-03-05 16:37:44 +09:00
parent 3c38e1f269
commit 6bd3723e73
3 changed files with 54 additions and 26 deletions

View File

@ -40,6 +40,7 @@ public class InputTransaction {
// Outputs
private int mRequiredShiftUpdate = SHIFT_NO_UPDATE;
private boolean mRequiresUpdateSuggestions = false;
public InputTransaction(final SettingsValues settingsValues, final Event event,
final long timestamp, final int spaceState, final int shiftState) {
@ -50,10 +51,34 @@ public class InputTransaction {
mShiftState = shiftState;
}
/**
* Indicate that this transaction requires some type of shift update.
* @param updateType What type of shift update this requires.
*/
public void requireShiftUpdate(final int updateType) {
mRequiredShiftUpdate = Math.max(mRequiredShiftUpdate, updateType);
}
/**
* Gets what type of shift update this transaction requires.
* @return The shift update type.
*/
public int getRequiredShiftUpdate() {
return mRequiredShiftUpdate;
}
/**
* Indicate that this transaction requires updating the suggestions.
*/
public void setRequiresUpdateSuggestions() {
mRequiresUpdateSuggestions = true;
}
/**
* Find out whether this transaction requires updating the suggestions.
* @return Whether this transaction requires updating the suggestions.
*/
public boolean requiresUpdateSuggestions() {
return mRequiresUpdateSuggestions;
}
}

View File

@ -38,7 +38,6 @@ import android.net.ConnectivityManager;
import android.os.Debug;
import android.os.IBinder;
import android.os.Message;
import android.os.SystemClock;
import android.preference.PreferenceManager;
import android.text.InputType;
import android.text.TextUtils;
@ -1230,7 +1229,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
final InputTransaction completeInputTransaction =
mInputLogic.onCodeInput(mSettings.getCurrent(), event,
mKeyboardSwitcher.getKeyboardShiftMode(), mHandler);
updateShiftModeAfterInputTransaction(completeInputTransaction.getRequiredShiftUpdate());
updateStateAfterInputTransaction(completeInputTransaction);
mKeyboardSwitcher.onCodeInput(codePoint);
}
@ -1450,7 +1449,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
final InputTransaction completeInputTransaction = mInputLogic.onPickSuggestionManually(
mSettings.getCurrent(), index, suggestionInfo,
mKeyboardSwitcher.getKeyboardShiftMode(), mHandler);
updateShiftModeAfterInputTransaction(completeInputTransaction.getRequiredShiftUpdate());
updateStateAfterInputTransaction(completeInputTransaction);
}
@Override
@ -1488,8 +1487,14 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
}
}
private void updateShiftModeAfterInputTransaction(final int requiredShiftUpdate) {
switch (requiredShiftUpdate) {
/**
* After an input transaction has been executed, some state must be updated. This includes
* the shift state of the keyboard and suggestions. This method looks at the finished
* inputTransaction to find out what is necessary and updates the state accordingly.
* @param inputTransaction The transaction that has been executed.
*/
private void updateStateAfterInputTransaction(final InputTransaction inputTransaction) {
switch (inputTransaction.getRequiredShiftUpdate()) {
case InputTransaction.SHIFT_UPDATE_LATER:
mHandler.postUpdateShiftState();
break;
@ -1498,6 +1503,9 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
break;
default: // SHIFT_NO_UPDATE
}
if (inputTransaction.requiresUpdateSuggestions()) {
mHandler.postUpdateSuggestionStrip();
}
}
private void hapticAndAudioFeedback(final int code, final int repeatCount) {

View File

@ -402,7 +402,7 @@ public final class InputLogic {
// A special key, like delete, shift, emoji, or the settings key.
switch (event.mKeyCode) {
case Constants.CODE_DELETE:
handleBackspace(inputTransaction, handler);
handleBackspace(inputTransaction);
LatinImeLogger.logOnDelete(event.mX, event.mY);
break;
case Constants.CODE_SHIFT:
@ -673,7 +673,7 @@ public final class InputLogic {
commitTyped(inputTransaction.mSettingsValues, LastComposedWord.NOT_A_SEPARATOR);
}
}
handleNonSeparator(inputTransaction.mSettingsValues, inputTransaction, handler);
handleNonSeparator(inputTransaction.mSettingsValues, inputTransaction);
}
return didAutoCorrect;
}
@ -684,9 +684,7 @@ public final class InputLogic {
* @param inputTransaction The transaction in progress.
*/
private void handleNonSeparator(final SettingsValues settingsValues,
final InputTransaction inputTransaction,
// TODO: Remove this argument
final LatinIME.UIHandler handler) {
final InputTransaction inputTransaction) {
final int codePoint = inputTransaction.mEvent.mCodePoint;
// TODO: refactor this method to stop flipping isComposingWord around all the time, and
// make it shorter (possibly cut into several pieces). Also factor handleNonSpecialCharacter
@ -762,7 +760,7 @@ public final class InputLogic {
// In case the "add to dictionary" hint was still displayed.
mSuggestionStripViewAccessor.dismissAddToDictionaryHint();
}
handler.postUpdateSuggestionStrip();
inputTransaction.setRequiresUpdateSuggestions();
if (settingsValues.mIsInternal) {
LatinImeLoggerUtils.onNonSeparator((char)codePoint, inputTransaction.mEvent.mX,
inputTransaction.mEvent.mY);
@ -844,7 +842,7 @@ public final class InputLogic {
}
startDoubleSpacePeriodCountdown(inputTransaction);
handler.postUpdateSuggestionStrip();
inputTransaction.setRequiresUpdateSuggestions();
} else {
if (swapWeakSpace) {
swapSwapperAndSpace(inputTransaction);
@ -880,9 +878,7 @@ public final class InputLogic {
* Handle a press on the backspace key.
* @param inputTransaction The transaction in progress.
*/
private void handleBackspace(final InputTransaction inputTransaction,
// TODO: remove this argument
final LatinIME.UIHandler handler) {
private void handleBackspace(final InputTransaction inputTransaction) {
mSpaceState = SpaceState.NONE;
mDeleteCount++;
@ -911,7 +907,7 @@ public final class InputLogic {
mWordComposer.deleteLast(inputTransaction.mEvent);
}
mConnection.setComposingText(getTextWithUnderline(mWordComposer.getTypedWord()), 1);
handler.postUpdateSuggestionStrip();
inputTransaction.setRequiresUpdateSuggestions();
if (!mWordComposer.isComposingWord()) {
// If we just removed the last character, auto-caps mode may have changed so we
// need to re-evaluate.
@ -922,7 +918,7 @@ public final class InputLogic {
if (inputTransaction.mSettingsValues.mIsInternal) {
LatinImeLoggerUtils.onAutoCorrectionCancellation();
}
revertCommit(inputTransaction.mSettingsValues, handler);
revertCommit(inputTransaction);
return;
}
if (mEnteredText != null && mConnection.sameAsTextBeforeCursor(mEnteredText)) {
@ -1401,11 +1397,9 @@ public final class InputLogic {
*
* This is triggered upon pressing backspace just after a commit with auto-correction.
*
* @param settingsValues the current settings values.
* @param inputTransaction The transaction in progress.
*/
private void revertCommit(final SettingsValues settingsValues,
// TODO: remove this argument
final LatinIME.UIHandler handler) {
private void revertCommit(final InputTransaction inputTransaction) {
final String previousWord = mLastComposedWord.mPrevWord;
final CharSequence originallyTypedWord = mLastComposedWord.mTypedWord;
final CharSequence committedWord = mLastComposedWord.mCommittedWord;
@ -1449,7 +1443,8 @@ public final class InputLogic {
// Given this, we add it to the list of suggestions, otherwise we discard it.
if (span instanceof SuggestionSpan) {
final SuggestionSpan suggestionSpan = (SuggestionSpan)span;
if (!suggestionSpan.getLocale().equals(settingsValues.mLocale.toString())) {
if (!suggestionSpan.getLocale().equals(
inputTransaction.mSettingsValues.mLocale.toString())) {
continue;
}
for (final String suggestion : suggestionSpan.getSuggestions()) {
@ -1464,11 +1459,11 @@ public final class InputLogic {
}
}
// Add the suggestion list to the list of suggestions.
textToCommit.setSpan(new SuggestionSpan(settingsValues.mLocale,
textToCommit.setSpan(new SuggestionSpan(inputTransaction.mSettingsValues.mLocale,
suggestions.toArray(new String[suggestions.size()]), 0 /* flags */),
0 /* start */, lastCharIndex /* end */, 0 /* flags */);
}
if (settingsValues.mSpacingAndPunctuations.mCurrentLanguageHasSpaces) {
if (inputTransaction.mSettingsValues.mSpacingAndPunctuations.mCurrentLanguageHasSpaces) {
// For languages with spaces, we revert to the typed string, but the cursor is still
// after the separator so we don't resume suggestions. If the user wants to correct
// the word, they have to press backspace again.
@ -1481,7 +1476,7 @@ public final class InputLogic {
mLatinIME.getCoordinatesForCurrentKeyboard(codePoints), previousWord);
mConnection.setComposingText(textToCommit, 1);
}
if (settingsValues.mIsInternal) {
if (inputTransaction.mSettingsValues.mIsInternal) {
LatinImeLoggerUtils.onSeparator(mLastComposedWord.mSeparatorString,
Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE);
}
@ -1494,7 +1489,7 @@ public final class InputLogic {
// separator.
mLastComposedWord = LastComposedWord.NOT_A_COMPOSED_WORD;
// We have a separator between the word and the cursor: we should show predictions.
handler.postUpdateSuggestionStrip();
inputTransaction.setRequiresUpdateSuggestions();
}
/**