Fix messages in tests

They are not failing because of this right now, but future
tests would fail without this.
Concretely, since the Handler for any given main thread is
a singleton managed by the framework, the messages won't
be removed automatically. In particular, messages posted
with a delay have a large destructive potential, because
they will go through before the startInputViewInternal
method is called, because it's called with a message too (in
turn, this is because of working around framework bugs).

Bug: 11142685
Change-Id: If81a168efcfd7d93806ddc4ea432d438c45a3e1d
This commit is contained in:
Jean Chalard 2013-11-27 16:49:30 +09:00
parent fd15afae46
commit dfc5aade2d
2 changed files with 10 additions and 0 deletions

View file

@ -233,6 +233,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
private static final int MSG_REOPEN_DICTIONARIES = 5;
private static final int MSG_ON_END_BATCH_INPUT = 6;
private static final int MSG_RESET_CACHES = 7;
// Update this when adding new messages
private static final int MSG_LAST = MSG_RESET_CACHES;
private static final int ARG1_NOT_GESTURE_INPUT = 0;
private static final int ARG1_DISMISS_GESTURE_FLOATING_PREVIEW_TEXT = 1;
@ -344,6 +346,13 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
removeMessages(MSG_UPDATE_SHIFT_STATE);
}
@UsedForTesting
public void removeAllMessages() {
for (int i = 0; i <= MSG_LAST; ++i) {
removeMessages(i);
}
}
public void showGesturePreviewAndSuggestionStrip(final SuggestedWords suggestedWords,
final boolean dismissGestureFloatingPreviewText) {
removeMessages(MSG_SHOW_GESTURE_PREVIEW_AND_SUGGESTION_STRIP);

View file

@ -193,6 +193,7 @@ public class InputTestsBase extends ServiceTestCase<LatinIMEForTests> {
@Override
protected void tearDown() {
mLatinIME.mHandler.removeAllMessages();
setStringPreference(PREF_AUTO_CORRECTION_THRESHOLD, mPreviousAutoCorrectSetting,
DEFAULT_AUTO_CORRECTION_THRESHOLD);
setDebugMode(mPreviousDebugSetting);