diff --git a/src/com/android/browser/search/SearchEngineInfo.java b/src/com/android/browser/search/SearchEngineInfo.java
index 0c11a04..ec304f6 100644
--- a/src/com/android/browser/search/SearchEngineInfo.java
+++ b/src/com/android/browser/search/SearchEngineInfo.java
@@ -83,15 +83,13 @@
 
         // Add the current language/country information to the URIs.
         Locale locale = context.getResources().getConfiguration().locale;
-        String language = locale.getLanguage();
-        StringBuilder languageBuilder = new StringBuilder(language);
-        String country = locale.getCountry();
-        if (!TextUtils.isEmpty(country) && useLangCountryHl(language, country)) {
-            languageBuilder.append('-');
-            languageBuilder.append(country);
+        StringBuilder language = new StringBuilder(locale.getLanguage());
+        if (!TextUtils.isEmpty(locale.getCountry())) {
+            language.append('-');
+            language.append(locale.getCountry());
         }
 
-        String language_str = languageBuilder.toString();
+        String language_str = language.toString();
         mSearchEngineData[FIELD_SEARCH_URI] =
                 mSearchEngineData[FIELD_SEARCH_URI].replace(PARAMETER_LANGUAGE, language_str);
         mSearchEngineData[FIELD_SUGGEST_URI] =
@@ -111,19 +109,6 @@
                 mSearchEngineData[FIELD_SUGGEST_URI].replace(PARAMETER_INPUT_ENCODING, enc);
     }
 
-    private static boolean useLangCountryHl(String language, String country) {
-        // lang-country is currently only supported for a small number of locales
-        if("en".equals(language)) {
-            return "GB".equals(country);
-        } else if ("zh".equals(language)) {
-            return "CN".equals(country) || "TW".equals(country);
-        } else if ("pt".equals(language)) {
-            return "BR".equals(country) || "PT".equals(country);
-        } else {
-            return false;
-        }
-    }
-
     public String getName() {
         return mName;
     }
