am 41282a35: EnhancedGoogleSearch overrides GoogleSearch if present.

Merge commit '41282a35568b51270440450c46bb31aa00e52caa'

* commit '41282a35568b51270440450c46bb31aa00e52caa':
  EnhancedGoogleSearch overrides GoogleSearch if present.
diff --git a/core/java/android/server/search/Searchables.java b/core/java/android/server/search/Searchables.java
index a27667b..c7cc8ed 100644
--- a/core/java/android/server/search/Searchables.java
+++ b/core/java/android/server/search/Searchables.java
@@ -57,6 +57,11 @@
     private SearchableInfo mDefaultSearchable = null;
     private SearchableInfo mDefaultSearchableForWebSearch = null;
 
+    public static String GOOGLE_SEARCH_COMPONENT_NAME =
+            "com.android.googlesearch/.GoogleSearch";
+    public static String ENHANCED_GOOGLE_SEARCH_COMPONENT_NAME =
+            "com.google.android.providers.enhancedgooglesearch/.Launcher";
+
     /**
      *
      * @param context Context to use for looking up activities etc.
@@ -341,6 +346,18 @@
                     return component;
                 }
             }
+        } else {
+            // If the current preferred activity is GoogleSearch, and we detect
+            // EnhancedGoogleSearch installed as well, set the latter as preferred since that
+            // is a superset and provides more functionality.
+            ComponentName cn = new ComponentName(ri.activityInfo.packageName, ri.activityInfo.name);
+            if (cn.flattenToShortString().equals(GOOGLE_SEARCH_COMPONENT_NAME)) {
+                ComponentName enhancedGoogleSearch = ComponentName.unflattenFromString(
+                        ENHANCED_GOOGLE_SEARCH_COMPONENT_NAME);
+                if (setPreferredActivity(enhancedGoogleSearch, Intent.ACTION_WEB_SEARCH)) {
+                    return enhancedGoogleSearch;
+                }
+            }
         }
 
         if (ri == null) return null;