Add app and suggestion icons to GoogleSearch

I took the Google favicon and magnifying glass from
EnhancedGoogleSearchProvider.

Also: refactors cursor column handling to use named constant.
Also: switch to non-deprecated GoogleHttpClient constructor.
Also: move intent_action to searchables.xml

Fixes http://b/issue?id=1982033
"GoogleSearch has no icon, and sets no suggestion icons"
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 23c3be9..b7e59d5 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -26,7 +26,8 @@
 
     <application
         android:process="android.process.acore"
-        android:label="@string/app_label">
+        android:label="@string/app_label"
+        android:icon="@drawable/google">
 
         <activity android:name=".GoogleSearch"
                 android:label="@string/search_label"
diff --git a/res/drawable/google.png b/res/drawable/google.png
new file mode 100644
index 0000000..fe61c2d
--- /dev/null
+++ b/res/drawable/google.png
Binary files differ
diff --git a/res/drawable/magnifying_glass.png b/res/drawable/magnifying_glass.png
new file mode 100755
index 0000000..7ce9686
--- /dev/null
+++ b/res/drawable/magnifying_glass.png
Binary files differ
diff --git a/res/xml/searchable.xml b/res/xml/searchable.xml
index 09b8867..6c9fef1 100644
--- a/res/xml/searchable.xml
+++ b/res/xml/searchable.xml
@@ -26,4 +26,5 @@
 
     android:searchSuggestAuthority="com.android.googlesearch.SuggestionProvider"
     android:searchSuggestSelection="field =?"
+    android:searchSuggestIntentAction="android.intent.action.WEB_SEARCH"
 />
diff --git a/src/com/android/googlesearch/SuggestionProvider.java b/src/com/android/googlesearch/SuggestionProvider.java
index c6ccfb1..f4cc78c 100644
--- a/src/com/android/googlesearch/SuggestionProvider.java
+++ b/src/com/android/googlesearch/SuggestionProvider.java
@@ -16,7 +16,6 @@
 
 package com.android.googlesearch;
 
-import com.android.internal.database.ArrayListCursor;
 import com.google.android.net.GoogleHttpClient;
 
 import org.apache.http.HttpResponse;
@@ -32,7 +31,6 @@
 import android.content.ContentProvider;
 import android.content.ContentValues;
 import android.content.Context;
-import android.content.Intent;
 import android.database.AbstractCursor;
 import android.database.Cursor;
 import android.net.ConnectivityManager;
@@ -44,7 +42,6 @@
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
-import java.util.ArrayList;
 import java.util.Locale;
 
 /**
@@ -54,8 +51,7 @@
  */
 public class SuggestionProvider extends ContentProvider {
 
-    public static final Uri CONTENT_URI = Uri.parse(
-            "content://com.android.googlesearch.SuggestionProvider");
+    private static final String LOG_TAG = "GoogleSearch";
 
     private static final String USER_AGENT = "Android/1.0";
     private String mSuggestUri;
@@ -64,23 +60,32 @@
     // TODO: this should be defined somewhere
     private static final String HTTP_TIMEOUT = "http.connection-manager.timeout";
 
-    private static final String LOG_TAG = "GoogleSearch.SuggestionProvider";
+    private static final String SUGGESTION_ICON =
+            "android.resource://com.android.googlesearch/" + R.drawable.magnifying_glass;
+
+    // Indexes into COLUMNS
+    private static final int COL_ID = 0;
+    private static final int COL_TEXT_1 = 1;
+    private static final int COL_TEXT_2 = 2;
+    private static final int COL_ICON_1 = 3;
+    private static final int COL_ICON_2 = 4;
+    private static final int COL_QUERY = 5;
 
     /* The suggestion columns used */
     private static final String[] COLUMNS = new String[] {
         "_id",
         SearchManager.SUGGEST_COLUMN_TEXT_1,
         SearchManager.SUGGEST_COLUMN_TEXT_2,
-        SearchManager.SUGGEST_COLUMN_QUERY,
-        SearchManager.SUGGEST_COLUMN_INTENT_ACTION,
+        SearchManager.SUGGEST_COLUMN_ICON_1,
+        SearchManager.SUGGEST_COLUMN_ICON_2,
+        SearchManager.SUGGEST_COLUMN_QUERY
     };
 
     private HttpClient mHttpClient;
 
     @Override
     public boolean onCreate() {
-        mHttpClient = new GoogleHttpClient(getContext().getContentResolver(),
-                USER_AGENT, false /* not gzip capable */);
+        mHttpClient = new GoogleHttpClient(getContext(), USER_AGENT, false /* not gzip capable */);
         HttpParams params = mHttpClient.getParams();
         params.setLongParameter(HTTP_TIMEOUT, HTTP_TIMEOUT_MS);
 
@@ -214,24 +219,29 @@
 
         @Override
         public String getString(int column) {
-            if ((mPos != -1)) {
-                if ((column == 1) || (column == 3)) {
-                    try {
+            if (mPos == -1) return null;
+            try {
+                switch (column) {
+                    case COL_ID:
+                        return String.valueOf(mPos);
+                    case COL_TEXT_1:
+                    case COL_QUERY:
                         return mSuggestions.getString(mPos);
-                    } catch (JSONException e) {
-                        Log.w(LOG_TAG, "Error", e);
-                    }
-                } else if (column == 2) {
-                    try {
+                    case COL_TEXT_2:
                         return mPopularity.getString(mPos);
-                    } catch (JSONException e) {
-                        Log.w(LOG_TAG, "Error", e);
-                    }
-                } else if (column == 4) {
-                    return Intent.ACTION_WEB_SEARCH;
+                    case COL_ICON_1:
+                        return SUGGESTION_ICON;
+                    case COL_ICON_2:
+                        return null;
+                    default:
+                        Log.w(LOG_TAG, "Bad column: " + column);
+                        return null;
                 }
+            } catch (JSONException e) {
+                Log.w(LOG_TAG, "Error parsing response: " + e);
+                return null;
             }
-            return null;
+
         }
 
         @Override
@@ -251,7 +261,7 @@
 
         @Override
         public long getLong(int column) {
-            if (column == 0) {
+            if (column == COL_ID) {
                 return mPos;        // use row# as the _Id
             }
             throw new UnsupportedOperationException();