Merge "Do not show the dropdown unless there is something to show."
diff --git a/core/java/android/webkit/WebTextView.java b/core/java/android/webkit/WebTextView.java
index 6e1a6fc..492cb80 100644
--- a/core/java/android/webkit/WebTextView.java
+++ b/core/java/android/webkit/WebTextView.java
@@ -67,7 +67,8 @@
  * to overlay html textfields (and textareas) to use our standard
  * text editing.
  */
-/* package */ class WebTextView extends AutoCompleteTextView {
+/* package */ class WebTextView extends AutoCompleteTextView
+        implements AdapterView.OnItemClickListener {
 
     static final String LOGTAG = "webtextview";
 
@@ -558,6 +559,27 @@
         mFromFocusChange = false;
     }
 
+    // AdapterView.OnItemClickListener implementation
+
+    @Override
+    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+        if (id == 0 && position == 0) {
+            // Blank out the text box while we wait for WebCore to fill the form.
+            replaceText("");
+            WebSettings settings = mWebView.getSettings();
+            if (mAutoFillProfileIsSet) {
+                // Call a webview method to tell WebCore to autofill the form.
+                mWebView.autoFillForm(mQueryId);
+            } else {
+                // There is no autofill profile setup yet and the user has
+                // elected to try and set one up. Call through to the
+                // embedder to action that.
+                mWebView.getWebChromeClient().setupAutoFill(
+                        mHandler.obtainMessage(AUTOFILL_FORM));
+            }
+        }
+    }
+
     @Override
     protected void onScrollChanged(int l, int t, int oldl, int oldt) {
         super.onScrollChanged(l, t, oldl, oldt);
@@ -814,33 +836,16 @@
             setInputType(getInputType()
                     | EditorInfo.TYPE_TEXT_FLAG_AUTO_COMPLETE);
             adapter.setTextView(this);
+            if (mAutoFillable) {
+                setOnItemClickListener(this);
+            } else {
+                setOnItemClickListener(null);
+            }
+            showDropDown();
+        } else {
+            dismissDropDown();
         }
         super.setAdapter(adapter);
-        if (mAutoFillable) {
-            setOnItemClickListener(new AdapterView.OnItemClickListener() {
-                @Override
-                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                    if (id == 0 && position == 0) {
-                        // Blank out the text box while we wait for WebCore to fill the form.
-                        replaceText("");
-                        WebSettings settings = mWebView.getSettings();
-                        if (mAutoFillProfileIsSet) {
-                            // Call a webview method to tell WebCore to autofill the form.
-                            mWebView.autoFillForm(mQueryId);
-                        } else {
-                            // There is no autofill profile setup yet and the user has
-                            // elected to try and set one up. Call through to the
-                            // embedder to action that.
-                            mWebView.getWebChromeClient().setupAutoFill(
-                                    mHandler.obtainMessage(AUTOFILL_FORM));
-                        }
-                    }
-                }
-            });
-        } else {
-            setOnItemClickListener(null);
-        }
-        showDropDown();
     }
 
     /**
@@ -858,6 +863,7 @@
         /**
          * {@inheritDoc}
          */
+        @Override
         public View getView(int position, View convertView, ViewGroup parent) {
             TextView tv =
                     (TextView) super.getView(position, convertView, parent);