From d26706538834e0ed58bf28f08d9a2885c0e7efcb Mon Sep 17 00:00:00 2001 From: Bjorn Bringert Date: Mon, 13 Sep 2010 14:06:41 +0100 Subject: Add user-selected search providers to browser The lists of search providers are taken from Chrome. Change-Id: I7af6dc1258950d1fc5cf86013f8be9f3c5db0f1a --- src/com/android/browser/BrowserSettings.java | 64 ++++++++++++++++++++++++++-- 1 file changed, 60 insertions(+), 4 deletions(-) (limited to 'src/com/android/browser/BrowserSettings.java') diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java index 51b4eaa..6263eb3 100644 --- a/src/com/android/browser/BrowserSettings.java +++ b/src/com/android/browser/BrowserSettings.java @@ -17,14 +17,22 @@ package com.android.browser; +import com.android.browser.search.SearchEngine; +import com.android.browser.search.SearchEngines; + import android.app.ActivityManager; +import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; import android.content.pm.ActivityInfo; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; +import android.database.ContentObserver; +import android.os.Handler; import android.preference.PreferenceActivity; import android.preference.PreferenceScreen; +import android.provider.Settings; +import android.util.Log; import android.webkit.CookieManager; import android.webkit.GeolocationPermissions; import android.webkit.ValueCallback; @@ -71,6 +79,8 @@ class BrowserSettings extends Observable { private boolean openInBackground; private String defaultTextEncodingName; private String homeUrl = ""; + private SearchEngine searchEngine; + private boolean showSearchSuggestions; private boolean autoFitPage; private boolean landscapeOnly; private boolean loadsPageInOverviewMode; @@ -121,6 +131,8 @@ class BrowserSettings extends Observable { public final static String PREF_CLEAR_COOKIES = "privacy_clear_cookies"; public final static String PREF_CLEAR_HISTORY = "privacy_clear_history"; public final static String PREF_HOMEPAGE = "homepage"; + public final static String PREF_SEARCH_ENGINE = "search_engine"; + public final static String PREF_SHOW_SEARCH_SUGGESTIONS = "show_search_suggestions"; public final static String PREF_CLEAR_FORM_DATA = "privacy_clear_form_data"; public final static String PREF_CLEAR_PASSWORDS = @@ -234,7 +246,7 @@ class BrowserSettings extends Observable { * stored in this BrowserSettings object. This will update all * observers of this object. */ - public void loadFromDb(Context ctx) { + public void loadFromDb(final Context ctx) { SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(ctx); // Set the default value for the Application Caches path. @@ -266,17 +278,41 @@ class BrowserSettings extends Observable { pageCacheCapacity = 1; } - // Load the defaults from the xml + final ContentResolver cr = ctx.getContentResolver(); + cr.registerContentObserver( + Settings.System.getUriFor(Settings.System.SHOW_WEB_SUGGESTIONS), false, + new ContentObserver(new Handler()) { + @Override + public void onChange(boolean selfChange) { + SharedPreferences p = + PreferenceManager.getDefaultSharedPreferences(ctx); + updateShowWebSuggestions(cr, p); + } + }); + updateShowWebSuggestions(cr, p); + + // Load the defaults from the xml // This call is TOO SLOW, need to manually keep the defaults // in sync //PreferenceManager.setDefaultValues(ctx, R.xml.browser_preferences); - syncSharedPreferences(p); + syncSharedPreferences(ctx, p); } - /* package */ void syncSharedPreferences(SharedPreferences p) { + /* package */ void syncSharedPreferences(Context ctx, SharedPreferences p) { homeUrl = p.getString(PREF_HOMEPAGE, homeUrl); + String searchEngineName = p.getString(PREF_SEARCH_ENGINE, null); + if (searchEngine == null || !searchEngine.getName().equals(searchEngineName)) { + if (searchEngine != null) { + searchEngine.close(); + } + searchEngine = SearchEngines.get(ctx, searchEngineName); + } + Log.i(TAG, "Selected search engine: " + searchEngine); + showSearchSuggestions = p.getBoolean(PREF_SHOW_SEARCH_SUGGESTIONS, true); + // Persist to system settings + saveShowWebSuggestions(ctx.getContentResolver()); loadsImagesAutomatically = p.getBoolean("load_images", loadsImagesAutomatically); @@ -365,10 +401,30 @@ class BrowserSettings extends Observable { update(); } + private void saveShowWebSuggestions(ContentResolver cr) { + int value = showSearchSuggestions ? 1 : 0; + Settings.System.putInt(cr, Settings.System.SHOW_WEB_SUGGESTIONS, value); + } + + private void updateShowWebSuggestions(ContentResolver cr, SharedPreferences p) { + showSearchSuggestions = + Settings.System.getInt(cr, + Settings.System.SHOW_WEB_SUGGESTIONS, 1) == 1; + p.edit().putBoolean(PREF_SHOW_SEARCH_SUGGESTIONS, showSearchSuggestions).commit(); + } + public String getHomePage() { return homeUrl; } + public SearchEngine getSearchEngine() { + return searchEngine; + } + + public boolean getShowSearchSuggestions() { + return showSearchSuggestions; + } + public String getJsFlags() { return jsFlags; } -- cgit v1.1