diff options
Diffstat (limited to 'src/com/android/browser/BrowserSettings.java')
-rw-r--r-- | src/com/android/browser/BrowserSettings.java | 63 |
1 files changed, 53 insertions, 10 deletions
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java index 3d5ca03..3791eb0 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,7 @@ class BrowserSettings extends Observable { private boolean openInBackground; private String defaultTextEncodingName; private String homeUrl = ""; + private SearchEngine searchEngine; private boolean autoFitPage; private boolean landscapeOnly; private boolean loadsPageInOverviewMode; @@ -121,6 +130,7 @@ 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_CLEAR_FORM_DATA = "privacy_clear_form_data"; public final static String PREF_CLEAR_PASSWORDS = @@ -137,12 +147,20 @@ class BrowserSettings extends Observable { "privacy_clear_geolocation_access"; private static final String DESKTOP_USERAGENT = "Mozilla/5.0 (Macintosh; " + - "U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/530.17 (KHTML, " + - "like Gecko) Version/4.0 Safari/530.17"; + "U; Intel Mac OS X 10_6_3; en-us) AppleWebKit/533.16 (KHTML, " + + "like Gecko) Version/5.0 Safari/533.16"; private static final String IPHONE_USERAGENT = "Mozilla/5.0 (iPhone; U; " + - "CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 " + - "(KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16"; + "CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 " + + "(KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7"; + + private static final String IPAD_USERAGENT = "Mozilla/5.0 (iPad; U; " + + "CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 " + + "(KHTML, like Gecko) Version/4.0.4 Mobile/7B367 Safari/531.21.10"; + + private static final String FROYO_USERAGENT = "Mozilla/5.0 (Linux; U; " + + "Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 " + + "(KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"; // Value to truncate strings when adding them to a TextView within // a ListView @@ -182,6 +200,10 @@ class BrowserSettings extends Observable { s.setUserAgentString(DESKTOP_USERAGENT); } else if (b.userAgent == 2) { s.setUserAgentString(IPHONE_USERAGENT); + } else if (b.userAgent == 3) { + s.setUserAgentString(IPAD_USERAGENT); + } else if (b.userAgent == 4) { + s.setUserAgentString(FROYO_USERAGENT); } s.setUseWideViewPort(b.useWideViewPort); s.setLoadsImagesAutomatically(b.loadsImagesAutomatically); @@ -234,7 +256,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 +288,34 @@ class BrowserSettings extends Observable { pageCacheCapacity = 1; } - // Load the defaults from the xml + // 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, + SearchEngine.GOOGLE); + if (searchEngine == null || !searchEngine.getName().equals(searchEngineName)) { + if (searchEngine != null) { + if (searchEngine.supportsVoiceSearch()) { + // One or more tabs could have been in voice search mode. + // Clear it, since the new SearchEngine may not support + // it, or may handle it differently. + for (int i = 0; i < mTabControl.getTabCount(); i++) { + mTabControl.getTab(i).revertVoiceSearchMode(); + } + } + searchEngine.close(); + } + searchEngine = SearchEngines.get(ctx, searchEngineName); + } + Log.i(TAG, "Selected search engine: " + searchEngine); loadsImagesAutomatically = p.getBoolean("load_images", loadsImagesAutomatically); @@ -369,6 +408,10 @@ class BrowserSettings extends Observable { return homeUrl; } + public SearchEngine getSearchEngine() { + return searchEngine; + } + public String getJsFlags() { return jsFlags; } @@ -381,7 +424,7 @@ class BrowserSettings extends Observable { Editor ed = PreferenceManager. getDefaultSharedPreferences(context).edit(); ed.putString(PREF_HOMEPAGE, url); - ed.commit(); + ed.apply(); homeUrl = url; } @@ -561,7 +604,7 @@ class BrowserSettings extends Observable { reset(); SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(ctx); - p.edit().clear().commit(); + p.edit().clear().apply(); PreferenceManager.setDefaultValues(ctx, R.xml.browser_preferences, true); // reset homeUrl |