diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 1c3048ae62da797f496549389dce0626f1f2cddf..d2c4ca7124400ad6d479b63ce3bfc002b88acdf6 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -686,16 +686,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
         final SettingsValues settingsValues = mSettings.getCurrent();
         if (settingsValues.mDisplayOrientation != conf.orientation) {
             mHandler.startOrientationChanging();
-            // If !isComposingWord, #commitTyped() is a no-op, but still, it's better to avoid
-            // the useless IPC of {begin,end}BatchEdit.
-            if (mInputLogic.mWordComposer.isComposingWord()) {
-                mInputLogic.mConnection.beginBatchEdit();
-                // If we had a composition in progress, we need to commit the word so that the
-                // suggestionsSpan will be added. This will allow resuming on the same suggestions
-                // after rotation is finished.
-                mInputLogic.commitTyped(mSettings.getCurrent(), LastComposedWord.NOT_A_SEPARATOR);
-                mInputLogic.mConnection.endBatchEdit();
-            }
+            mInputLogic.onOrientationChange(mSettings.getCurrent());
         }
         // TODO: Remove this test.
         if (!conf.locale.equals(mPersonalizationDictionaryUpdater.getLocale())) {
diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
index 213fe0b811bdd80af9e4a2e3b6685736fcb434df..5ab7db8ceeb68591a797678ebf20a69f4b9b1927 100644
--- a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
+++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
@@ -80,7 +80,8 @@ public final class InputLogic {
     private final DictionaryFacilitator mDictionaryFacilitator;
 
     public LastComposedWord mLastComposedWord = LastComposedWord.NOT_A_COMPOSED_WORD;
-    public final WordComposer mWordComposer;
+    // This has package visibility so it can be accessed from InputLogicHandler.
+    /* package */ final WordComposer mWordComposer;
     public final RichInputConnection mConnection;
     private final RecapitalizeStatus mRecapitalizeStatus = new RecapitalizeStatus();
 
@@ -151,6 +152,23 @@ public final class InputLogic {
         startInput(combiningSpec);
     }
 
+    /**
+     * Call this when the orientation changes.
+     * @param settingsValues the current values of the settings.
+     */
+    public void onOrientationChange(final SettingsValues settingsValues) {
+        // If !isComposingWord, #commitTyped() is a no-op, but still, it's better to avoid
+        // the useless IPC of {begin,end}BatchEdit.
+        if (mWordComposer.isComposingWord()) {
+            mConnection.beginBatchEdit();
+            // If we had a composition in progress, we need to commit the word so that the
+            // suggestionsSpan will be added. This will allow resuming on the same suggestions
+            // after rotation is finished.
+            commitTyped(settingsValues, LastComposedWord.NOT_A_SEPARATOR);
+            mConnection.endBatchEdit();
+        }
+    }
+
     /**
      * Clean up the input logic after input is finished.
      */