Dismiss the ime switch notification properly

Bug: 5159818

Change-Id: I606294dd453d3cc105714c62b945fcf1fa11164d
diff --git a/services/java/com/android/server/InputMethodManagerService.java b/services/java/com/android/server/InputMethodManagerService.java
index 6b64dd0..c11755b 100644
--- a/services/java/com/android/server/InputMethodManagerService.java
+++ b/services/java/com/android/server/InputMethodManagerService.java
@@ -619,10 +619,7 @@
     }
 
     void updateImeWindowStatusLocked() {
-        if (mStatusBar != null) {
-            mStatusBar.setImeWindowStatus(mCurToken, mImeWindowVis,
-                    mBackDisposition);
-        }
+        setImeWindowStatus(mCurToken, mImeWindowVis, mBackDisposition);
     }
 
     @Override
@@ -995,6 +992,8 @@
                 sessionState.session.finishSession();
             } catch (RemoteException e) {
                 Slog.w(TAG, "Session failed to close due to remote exception", e);
+                mImeWindowVis = 0;
+                updateImeWindowStatusLocked();
             }
         }
     }
@@ -1121,6 +1120,7 @@
         }
     }
 
+    @SuppressWarnings("deprecation")
     @Override
     public void setImeWindowStatus(IBinder token, int vis, int backDisposition) {
         int uid = Binder.getCallingUid();
@@ -2591,6 +2591,7 @@
     }
 
     // TODO: We should change the return type from List to List<Parcelable>
+    @SuppressWarnings("rawtypes")
     @Override
     public List getShortcutInputMethodsAndSubtypes() {
         synchronized (mMethodMap) {