Select search engine based on locale
- Allow user specific overrides of search engine based on locale.
- If user does not have an override for search engine
use default locale specific search engine.
CR-Fixed:910238
Change-Id: I8775ce669c1625992954b53ec5ed39503f304596
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index fef0b44..fce0c10 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -24,6 +24,7 @@
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Build;
+import android.preference.ListPreference;
import android.preference.PreferenceManager;
import android.provider.Settings;
import android.util.DisplayMetrics;
@@ -493,7 +494,7 @@
return mAppCachePath;
}
- private void updateSearchEngine(boolean force) {
+ protected void updateSearchEngine(boolean force) {
String searchEngineName = getSearchEngineName();
if (force || mSearchEngine == null ||
!mSearchEngine.getName().equals(searchEngineName)) {
@@ -799,11 +800,11 @@
// it creates the restriction and if enabled it sets the <default_search_engine_value>.
SearchEngineRestriction.getInstance();
- String defaultSearchEngineValue = mContext.getString(R.string.default_search_engine_value);
+ String defaultSearchEngineValue = getUserSearchEngine();
if (defaultSearchEngineValue == null) {
defaultSearchEngineValue = SearchEngine.GOOGLE;
}
- return mPrefs.getString(PREF_SEARCH_ENGINE, defaultSearchEngineValue);
+ return defaultSearchEngineValue;
}
public boolean allowAppTabs() {
@@ -854,6 +855,23 @@
mContext.getResources().getString(R.string.value_temporal_edge_swipe)).apply();
}
+ public void setUserSearchEngine(String engine) {
+ if (!engine.equals(mContext.getResources().getString(R.string.default_search_engine_value)))
+ mPrefs.edit().putString(
+ PREF_USER_SEARCH_ENGINE + mContext.getResources().getConfiguration().locale,
+ engine).apply();
+ // ensure changing back to default clears the search engine
+ else
+ mPrefs.edit().remove(PREF_USER_SEARCH_ENGINE
+ + mContext.getResources().getConfiguration().locale).apply();
+ }
+
+ public String getUserSearchEngine() {
+ return mPrefs.getString(
+ PREF_USER_SEARCH_ENGINE + mContext.getResources().getConfiguration().locale
+ , mContext.getResources().getString(R.string.default_search_engine_value));
+ }
+
public void setEdgeSwipeSpatial() {
mPrefs.edit().putString(PREF_EDGE_SWIPE,
mContext.getResources().getString(R.string.value_spatial_edge_swipe)).apply();
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index e71bc27..4c05906 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -812,6 +812,8 @@
}
mActivityStopped = false;
UpdateNotificationService.updateCheck(mActivity);
+ // reset the search engine based on locale
+ mSettings.updateSearchEngine(false);
mSettings.setLastRunPaused(false);
Tab current = mTabControl.getCurrentTab();
if (current != null) {
diff --git a/src/com/android/browser/PreferenceKeys.java b/src/com/android/browser/PreferenceKeys.java
index 15ec6a0..ce6c4cb 100644
--- a/src/com/android/browser/PreferenceKeys.java
+++ b/src/com/android/browser/PreferenceKeys.java
@@ -145,4 +145,8 @@
static final String PREF_LEGAL_PRIVACY_POLICY = "legal_privacy_policy";
static final String ACTION_RELOAD_PAGE = "reload";
+
+ // User preference
+ static final String PREF_USER_SEARCH_ENGINE = "user_search_engine-";
+
}
diff --git a/src/com/android/browser/preferences/AdvancedPreferencesFragment.java b/src/com/android/browser/preferences/AdvancedPreferencesFragment.java
index 6524767..1a87d64 100644
--- a/src/com/android/browser/preferences/AdvancedPreferencesFragment.java
+++ b/src/com/android/browser/preferences/AdvancedPreferencesFragment.java
@@ -146,6 +146,8 @@
} else if (pref.getKey().equals(PreferenceKeys.PREF_SEARCH_ENGINE)) {
ListPreference lp = (ListPreference) pref;
+ // update the user preference
+ BrowserSettings.getInstance().setUserSearchEngine((String) objValue);
lp.setValue((String) objValue);
updateListPreferenceSummary(lp);
return false;