Loading java/src/com/android/inputmethod/latin/LatinIME.java +6 −5 Original line number Diff line number Diff line Loading @@ -156,7 +156,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen private static final int MSG_SHOW_GESTURE_PREVIEW_AND_SUGGESTION_STRIP = 3; private static final int MSG_RESUME_SUGGESTIONS = 4; private static final int MSG_REOPEN_DICTIONARIES = 5; private static final int MSG_ON_END_BATCH_INPUT = 6; private static final int MSG_UPDATE_TAIL_BATCH_INPUT_COMPLETED = 6; private static final int MSG_RESET_CACHES = 7; // Update this when adding new messages private static final int MSG_LAST = MSG_RESET_CACHES; Loading Loading @@ -220,8 +220,9 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen // get any suggestions. Wait one frame. postUpdateSuggestionStrip(); break; case MSG_ON_END_BATCH_INPUT: latinIme.mInputLogic.endBatchInputInternal(latinIme.mSettings.getCurrent(), case MSG_UPDATE_TAIL_BATCH_INPUT_COMPLETED: latinIme.mInputLogic.onUpdateTailBatchInputCompleted( latinIme.mSettings.getCurrent(), (SuggestedWords) msg.obj, latinIme.mKeyboardSwitcher); break; case MSG_RESET_CACHES: Loading Loading @@ -304,8 +305,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen ARG1_NOT_GESTURE_INPUT, ARG2_UNUSED, suggestedWords).sendToTarget(); } public void onEndBatchInput(final SuggestedWords suggestedWords) { obtainMessage(MSG_ON_END_BATCH_INPUT, suggestedWords).sendToTarget(); public void showTailBatchInputResult(final SuggestedWords suggestedWords) { obtainMessage(MSG_UPDATE_TAIL_BATCH_INPUT_COMPLETED, suggestedWords).sendToTarget(); } // Working variables for the following methods. Loading java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java +2 −2 Original line number Diff line number Diff line Loading @@ -601,7 +601,7 @@ public final class InputLogic { } public void onEndBatchInput(final InputPointers batchPointers) { mInputLogicHandler.onEndBatchInput(batchPointers, mAutoCommitSequenceNumber); mInputLogicHandler.updateTailBatchInput(batchPointers, mAutoCommitSequenceNumber); ++mAutoCommitSequenceNumber; } Loading Loading @@ -1794,7 +1794,7 @@ public final class InputLogic { * @param settingsValues the current values of the settings. * @param suggestedWords suggestedWords to use. */ public void endBatchInputInternal(final SettingsValues settingsValues, public void onUpdateTailBatchInputCompleted(final SettingsValues settingsValues, final SuggestedWords suggestedWords, // TODO: remove this argument final KeyboardSwitcher keyboardSwitcher) { Loading java/src/com/android/inputmethod/latin/inputlogic/InputLogicHandler.java +17 −13 Original line number Diff line number Diff line Loading @@ -54,7 +54,8 @@ class InputLogicHandler implements Handler.Callback { @Override public void onCancelBatchInput() {} @Override public void onEndBatchInput(final InputPointers batchPointers, final int sequenceNumber) {} public void updateTailBatchInput(final InputPointers batchPointers, final int sequenceNumber) {} @Override public void getSuggestedWords(final int sessionId, final int sequenceNumber, final OnGetSuggestedWordsCallback callback) {} Loading Loading @@ -106,7 +107,7 @@ class InputLogicHandler implements Handler.Callback { * Fetch suggestions corresponding to an update of a batch input. * @param batchPointers the updated pointers, including the part that was passed last time. * @param sequenceNumber the sequence number associated with this batch input. * @param forEnd true if this is the end of a batch input, false if it's an update. * @param isTailBatchInput true if this is the end of a batch input, false if it's an update. */ // This method can be called from any thread and will see to it that the correct threads // are used for parts that require it. This method will send a message to the Non-UI handler Loading @@ -115,7 +116,7 @@ class InputLogicHandler implements Handler.Callback { // send a message to the UI handler in LatinIME so that showing suggestions can be done on // the UI thread. private void updateBatchInput(final InputPointers batchPointers, final int sequenceNumber, final boolean forEnd) { final int sequenceNumber, final boolean isTailBatchInput) { synchronized (mLock) { if (!mInBatchInput) { // Batch input has ended or canceled while the message was being delivered. Loading @@ -136,12 +137,12 @@ class InputLogicHandler implements Handler.Callback { suggestedWords = mInputLogic.mSuggestedWords; } mLatinIME.mHandler.showGesturePreviewAndSuggestionStrip(suggestedWords, forEnd /* dismissGestureFloatingPreviewText */); if (forEnd) { isTailBatchInput /* dismissGestureFloatingPreviewText */); if (isTailBatchInput) { mInBatchInput = false; // The following call schedules onEndBatchInputInternal // to be called on the UI thread. mLatinIME.mHandler.onEndBatchInput(suggestedWords); mLatinIME.mHandler.showTailBatchInputResult(suggestedWords); } } }); Loading @@ -159,13 +160,13 @@ class InputLogicHandler implements Handler.Callback { // Called on the UI thread by InputLogic. public void onUpdateBatchInput(final InputPointers batchPointers, final int sequenceNumber) { updateBatchInput(batchPointers, sequenceNumber, false /* forEnd */); updateBatchInput(batchPointers, sequenceNumber, false /* isTailBatchInput */); } /** * Cancel a batch input. * * Note that as opposed to onEndBatchInput, we do the UI side of this immediately on the * Note that as opposed to updateTailBatchInput, we do the UI side of this immediately on the * same thread, rather than get this to call a method in LatinIME. This is because * canceling a batch input does not necessitate the long operation of pulling suggestions. */ Loading @@ -177,17 +178,20 @@ class InputLogicHandler implements Handler.Callback { } /** * Finish a batch input. * Trigger an update for a tail batch input. * * This fetches suggestions, updates the suggestion strip and commits the first suggestion. * It also dismisses the floating text preview. * A tail batch input is the last update for a gesture, the one that is triggered after the * user lifts their finger. This method schedules fetching suggestions on the non-UI thread, * then when the suggestions are computed it comes back on the UI thread to update the * suggestion strip, commit the first suggestion, and dismiss the floating text preview. * * @param batchPointers the updated batch pointers. * @param sequenceNumber the sequence number associated with this batch input. */ // Called on the UI thread by InputLogic. public void onEndBatchInput(final InputPointers batchPointers, final int sequenceNumber) { updateBatchInput(batchPointers, sequenceNumber, true /* forEnd */); public void updateTailBatchInput(final InputPointers batchPointers, final int sequenceNumber) { updateBatchInput(batchPointers, sequenceNumber, true /* isTailBatchInput */); } public void getSuggestedWords(final int sessionId, final int sequenceNumber, Loading Loading
java/src/com/android/inputmethod/latin/LatinIME.java +6 −5 Original line number Diff line number Diff line Loading @@ -156,7 +156,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen private static final int MSG_SHOW_GESTURE_PREVIEW_AND_SUGGESTION_STRIP = 3; private static final int MSG_RESUME_SUGGESTIONS = 4; private static final int MSG_REOPEN_DICTIONARIES = 5; private static final int MSG_ON_END_BATCH_INPUT = 6; private static final int MSG_UPDATE_TAIL_BATCH_INPUT_COMPLETED = 6; private static final int MSG_RESET_CACHES = 7; // Update this when adding new messages private static final int MSG_LAST = MSG_RESET_CACHES; Loading Loading @@ -220,8 +220,9 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen // get any suggestions. Wait one frame. postUpdateSuggestionStrip(); break; case MSG_ON_END_BATCH_INPUT: latinIme.mInputLogic.endBatchInputInternal(latinIme.mSettings.getCurrent(), case MSG_UPDATE_TAIL_BATCH_INPUT_COMPLETED: latinIme.mInputLogic.onUpdateTailBatchInputCompleted( latinIme.mSettings.getCurrent(), (SuggestedWords) msg.obj, latinIme.mKeyboardSwitcher); break; case MSG_RESET_CACHES: Loading Loading @@ -304,8 +305,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen ARG1_NOT_GESTURE_INPUT, ARG2_UNUSED, suggestedWords).sendToTarget(); } public void onEndBatchInput(final SuggestedWords suggestedWords) { obtainMessage(MSG_ON_END_BATCH_INPUT, suggestedWords).sendToTarget(); public void showTailBatchInputResult(final SuggestedWords suggestedWords) { obtainMessage(MSG_UPDATE_TAIL_BATCH_INPUT_COMPLETED, suggestedWords).sendToTarget(); } // Working variables for the following methods. Loading
java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java +2 −2 Original line number Diff line number Diff line Loading @@ -601,7 +601,7 @@ public final class InputLogic { } public void onEndBatchInput(final InputPointers batchPointers) { mInputLogicHandler.onEndBatchInput(batchPointers, mAutoCommitSequenceNumber); mInputLogicHandler.updateTailBatchInput(batchPointers, mAutoCommitSequenceNumber); ++mAutoCommitSequenceNumber; } Loading Loading @@ -1794,7 +1794,7 @@ public final class InputLogic { * @param settingsValues the current values of the settings. * @param suggestedWords suggestedWords to use. */ public void endBatchInputInternal(final SettingsValues settingsValues, public void onUpdateTailBatchInputCompleted(final SettingsValues settingsValues, final SuggestedWords suggestedWords, // TODO: remove this argument final KeyboardSwitcher keyboardSwitcher) { Loading
java/src/com/android/inputmethod/latin/inputlogic/InputLogicHandler.java +17 −13 Original line number Diff line number Diff line Loading @@ -54,7 +54,8 @@ class InputLogicHandler implements Handler.Callback { @Override public void onCancelBatchInput() {} @Override public void onEndBatchInput(final InputPointers batchPointers, final int sequenceNumber) {} public void updateTailBatchInput(final InputPointers batchPointers, final int sequenceNumber) {} @Override public void getSuggestedWords(final int sessionId, final int sequenceNumber, final OnGetSuggestedWordsCallback callback) {} Loading Loading @@ -106,7 +107,7 @@ class InputLogicHandler implements Handler.Callback { * Fetch suggestions corresponding to an update of a batch input. * @param batchPointers the updated pointers, including the part that was passed last time. * @param sequenceNumber the sequence number associated with this batch input. * @param forEnd true if this is the end of a batch input, false if it's an update. * @param isTailBatchInput true if this is the end of a batch input, false if it's an update. */ // This method can be called from any thread and will see to it that the correct threads // are used for parts that require it. This method will send a message to the Non-UI handler Loading @@ -115,7 +116,7 @@ class InputLogicHandler implements Handler.Callback { // send a message to the UI handler in LatinIME so that showing suggestions can be done on // the UI thread. private void updateBatchInput(final InputPointers batchPointers, final int sequenceNumber, final boolean forEnd) { final int sequenceNumber, final boolean isTailBatchInput) { synchronized (mLock) { if (!mInBatchInput) { // Batch input has ended or canceled while the message was being delivered. Loading @@ -136,12 +137,12 @@ class InputLogicHandler implements Handler.Callback { suggestedWords = mInputLogic.mSuggestedWords; } mLatinIME.mHandler.showGesturePreviewAndSuggestionStrip(suggestedWords, forEnd /* dismissGestureFloatingPreviewText */); if (forEnd) { isTailBatchInput /* dismissGestureFloatingPreviewText */); if (isTailBatchInput) { mInBatchInput = false; // The following call schedules onEndBatchInputInternal // to be called on the UI thread. mLatinIME.mHandler.onEndBatchInput(suggestedWords); mLatinIME.mHandler.showTailBatchInputResult(suggestedWords); } } }); Loading @@ -159,13 +160,13 @@ class InputLogicHandler implements Handler.Callback { // Called on the UI thread by InputLogic. public void onUpdateBatchInput(final InputPointers batchPointers, final int sequenceNumber) { updateBatchInput(batchPointers, sequenceNumber, false /* forEnd */); updateBatchInput(batchPointers, sequenceNumber, false /* isTailBatchInput */); } /** * Cancel a batch input. * * Note that as opposed to onEndBatchInput, we do the UI side of this immediately on the * Note that as opposed to updateTailBatchInput, we do the UI side of this immediately on the * same thread, rather than get this to call a method in LatinIME. This is because * canceling a batch input does not necessitate the long operation of pulling suggestions. */ Loading @@ -177,17 +178,20 @@ class InputLogicHandler implements Handler.Callback { } /** * Finish a batch input. * Trigger an update for a tail batch input. * * This fetches suggestions, updates the suggestion strip and commits the first suggestion. * It also dismisses the floating text preview. * A tail batch input is the last update for a gesture, the one that is triggered after the * user lifts their finger. This method schedules fetching suggestions on the non-UI thread, * then when the suggestions are computed it comes back on the UI thread to update the * suggestion strip, commit the first suggestion, and dismiss the floating text preview. * * @param batchPointers the updated batch pointers. * @param sequenceNumber the sequence number associated with this batch input. */ // Called on the UI thread by InputLogic. public void onEndBatchInput(final InputPointers batchPointers, final int sequenceNumber) { updateBatchInput(batchPointers, sequenceNumber, true /* forEnd */); public void updateTailBatchInput(final InputPointers batchPointers, final int sequenceNumber) { updateBatchInput(batchPointers, sequenceNumber, true /* isTailBatchInput */); } public void getSuggestedWords(final int sessionId, final int sequenceNumber, Loading