From dfc5aade2d9e33c48cd0a6c89eadd2fcbf69c52f Mon Sep 17 00:00:00 2001 From: Jean Chalard Date: Wed, 27 Nov 2013 16:49:30 +0900 Subject: [PATCH] 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 --- java/src/com/android/inputmethod/latin/LatinIME.java | 9 +++++++++ .../com/android/inputmethod/latin/InputTestsBase.java | 1 + 2 files changed, 10 insertions(+) diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index 59d0e9fbd..2e5bb19d6 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -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); diff --git a/tests/src/com/android/inputmethod/latin/InputTestsBase.java b/tests/src/com/android/inputmethod/latin/InputTestsBase.java index 5e7a9e6c5..aaad740e4 100644 --- a/tests/src/com/android/inputmethod/latin/InputTestsBase.java +++ b/tests/src/com/android/inputmethod/latin/InputTestsBase.java @@ -193,6 +193,7 @@ public class InputTestsBase extends ServiceTestCase { @Override protected void tearDown() { + mLatinIME.mHandler.removeAllMessages(); setStringPreference(PREF_AUTO_CORRECTION_THRESHOLD, mPreviousAutoCorrectSetting, DEFAULT_AUTO_CORRECTION_THRESHOLD); setDebugMode(mPreviousDebugSetting);