Merge "Update IME focus when the active view is losing the focus." into mnc-dev
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 57c6cbf..e88c29e 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -2018,7 +2018,6 @@
                 mLastWasImTarget = imTarget;
                 InputMethodManager imm = InputMethodManager.peekInstance();
                 if (imm != null && imTarget) {
-                    imm.startGettingWindowFocus(mView);
                     imm.onWindowFocus(mView, mView.findFocus(),
                             mWindowAttributes.softInputMode,
                             !mHasHadWindowFocus, mWindowAttributes.flags);
@@ -3322,10 +3321,6 @@
 
                     InputMethodManager imm = InputMethodManager.peekInstance();
                     if (mView != null) {
-                        if (hasWindowFocus && imm != null && mLastWasImTarget &&
-                                !isInLocalFocusMode()) {
-                            imm.startGettingWindowFocus(mView);
-                        }
                         mAttachInfo.mKeyDispatchState.reset();
                         mView.dispatchWindowFocusChanged(hasWindowFocus);
                         mAttachInfo.mTreeObserver.dispatchOnWindowFocusChange(hasWindowFocus);
diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java
index 568e160..1fb791c 100644
--- a/core/java/android/view/inputmethod/InputMethodManager.java
+++ b/core/java/android/view/inputmethod/InputMethodManager.java
@@ -281,12 +281,7 @@
     boolean mFullscreenMode;
     
     // -----------------------------------------------------------
-    
-    /**
-     * This is the root view of the overall window that currently has input
-     * method focus.
-     */
-    View mCurRootView;
+
     /**
      * This is the view that should currently be served by an input method,
      * regardless of the state of setting that up.
@@ -806,7 +801,6 @@
      * Disconnect any existing input connection, clearing the served view.
      */
     void finishInputLocked() {
-        mCurRootView = null;
         mNextServedView = null;
         if (mServedView != null) {
             if (DEBUG) Log.v(TAG, "FINISH INPUT: " + mServedView);
@@ -1290,10 +1284,9 @@
     void focusInLocked(View view) {
         if (DEBUG) Log.v(TAG, "focusIn: " + view);
         
-        if (mCurRootView != view.getRootView()) {
-            // This is a request from a window that isn't in the window with
-            // IME focus, so ignore it.
-            if (DEBUG) Log.v(TAG, "Not IME target window, ignoring");
+        if (!view.hasWindowFocus()) {
+            // This is a request from a window that doesn't have window focus, so ignore it.
+            if (DEBUG) Log.v(TAG, "Not focused window, ignoring");
             return;
         }
         
@@ -1310,16 +1303,9 @@
             if (DEBUG) Log.v(TAG, "focusOut: " + view
                     + " mServedView=" + mServedView
                     + " winFocus=" + view.hasWindowFocus());
-            if (mServedView != view) {
-                // The following code would auto-hide the IME if we end up
-                // with no more views with focus.  This can happen, however,
-                // whenever we go into touch mode, so it ends up hiding
-                // at times when we don't really want it to.  For now it
-                // seems better to just turn it all off.
-                if (false && view.hasWindowFocus()) {
-                    mNextServedView = null;
-                    scheduleCheckFocusLocked(view);
-                }
+            if (mServedView == view && view.hasWindowFocus()) {
+                mNextServedView = null;
+                scheduleCheckFocusLocked(view);
             }
         }
     }
@@ -1442,13 +1428,6 @@
         }
     }
     
-    /** @hide */
-    public void startGettingWindowFocus(View rootView) {
-        synchronized (mH) {
-            mCurRootView = rootView;
-        }
-    }
-    
     /**
      * Report the current selection range.
      *
@@ -2156,7 +2135,6 @@
                 + " mBindSequence=" + mBindSequence
                 + " mCurId=" + mCurId);
         p.println("  mCurMethod=" + mCurMethod);
-        p.println("  mCurRootView=" + mCurRootView);
         p.println("  mServedView=" + mServedView);
         p.println("  mNextServedView=" + mNextServedView);
         p.println("  mServedConnecting=" + mServedConnecting);
diff --git a/core/java/android/webkit/FindActionModeCallback.java b/core/java/android/webkit/FindActionModeCallback.java
index ab6a2f9..6fef2d6 100644
--- a/core/java/android/webkit/FindActionModeCallback.java
+++ b/core/java/android/webkit/FindActionModeCallback.java
@@ -154,7 +154,6 @@
     }
 
     public void showSoftInput() {
-        mInput.startGettingWindowFocus(mEditText.getRootView());
         mInput.focusIn(mEditText);
         mInput.showSoftInput(mEditText, 0);
     }