Implement the psychic search engine.

(a) Add a new subclass of SearchEngine that receives
suggestions provided by psychic and displays them in the
suggestions dropdown.
(b) Add a Labs setting that can turn this feature on or
off.

Change-Id: Icae05b6b55f489278028e5af560d9b36014a0f59
diff --git a/src/com/android/browser/TitleBarXLarge.java b/src/com/android/browser/TitleBarXLarge.java
index 1b33084..f4ba9db 100644
--- a/src/com/android/browser/TitleBarXLarge.java
+++ b/src/com/android/browser/TitleBarXLarge.java
@@ -17,12 +17,15 @@
 package com.android.browser;
 
 import com.android.browser.autocomplete.SuggestedTextController.TextChangeWatcher;
+import com.android.browser.UI.DropdownChangeListener;
 import com.android.browser.search.SearchEngine;
 
 import android.app.Activity;
 import android.content.Context;
 import android.content.res.Resources;
+import android.database.DataSetObserver;
 import android.graphics.Bitmap;
+import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 import android.text.TextUtils;
 import android.view.KeyEvent;
@@ -37,6 +40,7 @@
 import android.widget.ImageButton;
 import android.widget.ImageView;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -274,7 +278,7 @@
     void setFavicon(Bitmap icon) { }
 
     private void clearOrClose() {
-        if (TextUtils.isEmpty(mUrlInput.getText())) {
+        if (TextUtils.isEmpty(mUrlInput.getUserText())) {
             // close
             mUrlInput.clearFocus();
         } else {
@@ -345,7 +349,7 @@
     }
 
     private void updateSearchMode(boolean userEdited) {
-        setSearchMode(!userEdited || TextUtils.isEmpty(mUrlInput.getText()));
+        setSearchMode(!userEdited || TextUtils.isEmpty(mUrlInput.getUserText()));
     }
 
     private void setSearchMode(boolean voiceSearchEnabled) {
@@ -425,4 +429,7 @@
         }
     }
 
+    void registerDropdownChangeListener(DropdownChangeListener d) {
+        mUrlInput.registerDropdownChangeListener(d);
+    }
 }