Hide ime switcher when the screen is turned off.

Bug: 5481999
Change-Id: Ifc870f1350db2a67405c05f6de447a69dc050408
diff --git a/services/java/com/android/server/InputMethodManagerService.java b/services/java/com/android/server/InputMethodManagerService.java
index 03d6b41..17ea03b 100644
--- a/services/java/com/android/server/InputMethodManagerService.java
+++ b/services/java/com/android/server/InputMethodManagerService.java
@@ -374,6 +374,7 @@
                 mScreenOn = true;
             } else if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
                 mScreenOn = false;
+                setImeWindowVisibilityStatusHiddenLocked();
             } else if (intent.getAction().equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {
                 hideInputMethodMenu();
                 return;
@@ -468,8 +469,7 @@
                             // Uh oh, current input method is no longer around!
                             // Pick another one...
                             Slog.i(TAG, "Current input method removed: " + curInputMethodId);
-                            mImeWindowVis = 0;
-                            updateImeWindowStatusLocked();
+                            setImeWindowVisibilityStatusHiddenLocked();
                             if (!chooseNewDefaultIMELocked()) {
                                 changed = true;
                                 curIm = null;
@@ -625,7 +625,12 @@
         }
     }
 
-    void updateImeWindowStatusLocked() {
+    private void setImeWindowVisibilityStatusHiddenLocked() {
+        mImeWindowVis = 0;
+        updateImeWindowStatusLocked();
+    }
+
+    private void updateImeWindowStatusLocked() {
         setImeWindowStatus(mCurToken, mImeWindowVis, mBackDisposition);
     }
 
@@ -999,8 +1004,7 @@
                 sessionState.session.finishSession();
             } catch (RemoteException e) {
                 Slog.w(TAG, "Session failed to close due to remote exception", e);
-                mImeWindowVis = 0;
-                updateImeWindowStatusLocked();
+                setImeWindowVisibilityStatusHiddenLocked();
             }
         }
     }
@@ -1395,13 +1399,11 @@
                         if (!mIWindowManager.inputMethodClientHasFocus(client)) {
                             if (DEBUG) Slog.w(TAG, "Ignoring hideSoftInput of uid "
                                     + uid + ": " + client);
-                            mImeWindowVis = 0;
-                            updateImeWindowStatusLocked();
+                            setImeWindowVisibilityStatusHiddenLocked();
                             return false;
                         }
                     } catch (RemoteException e) {
-                        mImeWindowVis = 0;
-                        updateImeWindowStatusLocked();
+                        setImeWindowVisibilityStatusHiddenLocked();
                         return false;
                     }
                 }