Merge "Fix rebuildWebTextView issues"
diff --git a/core/java/android/webkit/WebTextView.java b/core/java/android/webkit/WebTextView.java
index ccacd09..5ee1b8a 100644
--- a/core/java/android/webkit/WebTextView.java
+++ b/core/java/android/webkit/WebTextView.java
@@ -1090,6 +1090,7 @@
         setMaxLength(maxLength);
         setHorizontallyScrolling(single);
         setInputType(inputType);
+        clearComposingText();
         setImeOptions(imeOptions);
         setVisibility(VISIBLE);
         if (!autoComplete) {
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index a814b12..3731097 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -4804,16 +4804,7 @@
             mTextGeneration = 0;
         }
         mWebTextView.updateTextSize();
-        Rect visibleRect = new Rect();
-        calcOurContentVisibleRect(visibleRect);
-        // Note that sendOurVisibleRect calls viewToContent, so the coordinates
-        // should be in content coordinates.
-        Rect bounds = nativeFocusCandidateNodeBounds();
-        Rect vBox = contentToViewRect(bounds);
-        mWebTextView.setRect(vBox.left, vBox.top, vBox.width(), vBox.height());
-        if (!Rect.intersects(bounds, visibleRect)) {
-            revealSelection();
-        }
+        updateWebTextViewPosition();
         String text = nativeFocusCandidateText();
         int nodePointer = nativeFocusCandidatePointer();
         // This needs to be called before setType, which may call
@@ -4822,7 +4813,6 @@
         mWebTextView.setType(nativeFocusCandidateType());
         // Gravity needs to be set after setType
         mWebTextView.setGravityForRtl(nativeFocusCandidateIsRtlText());
-        updateWebTextViewPadding();
         if (null == text) {
             if (DebugFlags.WEB_VIEW) {
                 Log.v(LOGTAG, "rebuildWebTextView null == text");
@@ -4833,12 +4823,27 @@
         InputMethodManager imm = InputMethodManager.peekInstance();
         if (imm != null && imm.isActive(mWebTextView)) {
             imm.restartInput(mWebTextView);
+            mWebTextView.clearComposingText();
         }
         if (isFocused()) {
             mWebTextView.requestFocus();
         }
     }
 
+    private void updateWebTextViewPosition() {
+        Rect visibleRect = new Rect();
+        calcOurContentVisibleRect(visibleRect);
+        // Note that sendOurVisibleRect calls viewToContent, so the coordinates
+        // should be in content coordinates.
+        Rect bounds = nativeFocusCandidateNodeBounds();
+        Rect vBox = contentToViewRect(bounds);
+        mWebTextView.setRect(vBox.left, vBox.top, vBox.width(), vBox.height());
+        if (!Rect.intersects(bounds, visibleRect)) {
+            revealSelection();
+        }
+        updateWebTextViewPadding();
+    }
+
     /**
      * Update the padding of mWebTextView based on the native textfield/textarea
      */
@@ -8453,7 +8458,7 @@
                     // this is sent after finishing resize in WebViewCore. Make
                     // sure the text edit box is still on the  screen.
                     if (inEditingMode() && nativeCursorIsTextInput()) {
-                        rebuildWebTextView();
+                        updateWebTextViewPosition();
                     }
                     break;
                 case CLEAR_TEXT_ENTRY: