Merge changes I5092942a,I931c553f

* changes:
  [IL80] Reverse a test for clarity.
  [IL79] Some refactoring
main
Jean Chalard 2014-01-27 10:00:37 +00:00 committed by Android (Google) Code Review
commit b084da2ae6
2 changed files with 49 additions and 52 deletions

View File

@ -912,7 +912,13 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
composingSpanEnd, mInputLogic.mConnection); composingSpanEnd, mInputLogic.mConnection);
} }
if (mInputLogic.onUpdateSelection(mSettings.getCurrent(), oldSelStart, oldSelEnd, // If the keyboard is not visible, we don't need to do all the housekeeping work, as it
// will be reset when the keyboard shows up anyway.
// TODO: revisit this when LatinIME supports hardware keyboards.
// NOTE: the test harness subclasses LatinIME and overrides isInputViewShown().
// TODO: find a better way to simulate actual execution.
if (isInputViewShown() &&
mInputLogic.onUpdateSelection(mSettings.getCurrent(), oldSelStart, oldSelEnd,
newSelStart, newSelEnd, composingSpanStart, composingSpanEnd)) { newSelStart, newSelEnd, composingSpanStart, composingSpanEnd)) {
mKeyboardSwitcher.updateShiftState(); mKeyboardSwitcher.updateShiftState();
} }

View File

@ -195,24 +195,9 @@ public final class InputLogic {
final int oldSelStart, final int oldSelEnd, final int oldSelStart, final int oldSelEnd,
final int newSelStart, final int newSelEnd, final int newSelStart, final int newSelEnd,
final int composingSpanStart, final int composingSpanEnd) { final int composingSpanStart, final int composingSpanEnd) {
final boolean selectionChanged = oldSelStart != newSelStart || oldSelEnd != newSelEnd; if (mConnection.isBelatedExpectedUpdate(oldSelStart, newSelStart, oldSelEnd, newSelEnd)) {
return false;
// if composingSpanStart and composingSpanEnd are -1, it means there is no composing }
// span in the view - we can use that to narrow down whether the cursor was moved
// by us or not. If we are composing a word but there is no composing span, then
// we know for sure the cursor moved while we were composing and we should reset
// the state. TODO: rescind this policy: the framework never removes the composing
// span on its own accord while editing. This test is useless.
final boolean noComposingSpan = composingSpanStart == -1 && composingSpanEnd == -1;
// If the keyboard is not visible, we don't need to do all the housekeeping work, as it
// will be reset when the keyboard shows up anyway.
// TODO: revisit this when LatinIME supports hardware keyboards.
// NOTE: the test harness subclasses LatinIME and overrides isInputViewShown().
// TODO: find a better way to simulate actual execution.
// TODO: remove the #isInputViewShown() call from here.
if (mLatinIME.isInputViewShown() && !mConnection.isBelatedExpectedUpdate(oldSelStart,
newSelStart, oldSelEnd, newSelEnd)) {
// 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
@ -221,11 +206,19 @@ public final class InputLogic {
// state-related special processing to kick in. // state-related special processing to kick in.
mSpaceState = SpaceState.NONE; mSpaceState = SpaceState.NONE;
// if composingSpanStart and composingSpanEnd are -1, it means there is no composing
// span in the view - we can use that to narrow down whether the cursor was moved
// by us or not. If we are composing a word but there is no composing span, then
// we know for sure the cursor moved while we were composing and we should reset
// the state. TODO: rescind this policy: the framework never removes the composing
// span on its own accord while editing. This test is useless.
final boolean noComposingSpan = composingSpanStart == -1 && composingSpanEnd == -1;
final boolean selectionChanged = oldSelStart != newSelStart || oldSelEnd != newSelEnd;
// TODO: is it still necessary to test for composingSpan related stuff? // TODO: is it still necessary to test for composingSpan related stuff?
final boolean selectionChangedOrSafeToReset = selectionChanged final boolean selectionChangedOrSafeToReset = selectionChanged
|| (!mWordComposer.isComposingWord()) || noComposingSpan; || (!mWordComposer.isComposingWord()) || noComposingSpan;
final boolean hasOrHadSelection = (oldSelStart != oldSelEnd final boolean hasOrHadSelection = (oldSelStart != oldSelEnd || newSelStart != newSelEnd);
|| newSelStart != newSelEnd);
final int moveAmount = newSelStart - oldSelStart; final int moveAmount = newSelStart - oldSelStart;
if (selectionChangedOrSafeToReset && (hasOrHadSelection if (selectionChangedOrSafeToReset && (hasOrHadSelection
|| !mWordComposer.moveCursorByAndReturnIfInsideComposingWord(moveAmount))) { || !mWordComposer.moveCursorByAndReturnIfInsideComposingWord(moveAmount))) {
@ -254,8 +247,6 @@ public final class InputLogic {
mRecapitalizeStatus.deactivate(); mRecapitalizeStatus.deactivate();
return true; return true;
} }
return false;
}
/** /**
* React to a code input. It may be a code point to insert, or a symbolic value that influences * React to a code input. It may be a code point to insert, or a symbolic value that influences