merge in jb-release history after reset to master
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index e50f72e..c00ffa8 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -263,7 +263,7 @@
<item msgid="2193955365569270096">"Tiếng Hàn (EUC-KR)"</item>
</string-array>
<string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Mã hóa văn bản"</string>
- <string name="pref_accessibility_title" msgid="5127836981587423215">"Khả năng truy cập"</string>
+ <string name="pref_accessibility_title" msgid="5127836981587423215">"Hỗ trợ truy cập"</string>
<string name="pref_font_size_category" msgid="6683754355084218254">"Kích thước văn bản"</string>
<string name="pref_lab_title" msgid="5571091610359629423">"Lab"</string>
<string name="pref_lab_quick_controls" msgid="3267606522082281367">"Các điều khiển nhanh"</string>
diff --git a/res/values/all_search_engines.xml b/res/values/all_search_engines.xml
index 58992a4..e472915 100644
--- a/res/values/all_search_engines.xml
+++ b/res/values/all_search_engines.xml
@@ -207,10 +207,10 @@
<string-array name="google" translatable="false">
<item>Google</item>
<item>google.com</item>
- <item>http://www.google.com/favicon.ico</item>
- <item>http://www.google.com/search?hl={language}&ie={inputEncoding}&source=android-browser&q={searchTerms}</item>
+ <item>https://www.google.com/favicon.ico</item>
+ <item>https://www.google.com/search?ie={inputEncoding}&source=android-browser&q={searchTerms}</item>
<item>UTF-8</item>
- <item>http://www.google.com/complete/search?hl={language}&client=android&q={searchTerms}</item>
+ <item>https://www.google.com/complete/search?client=android&q={searchTerms}</item>
</string-array>
<string-array name="bing_en_NZ" translatable="false">
<item>Bing</item>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 2de5e58..2a7fa96 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -664,6 +664,28 @@
<string name="pref_data_preload_summary">Allow browser to preload high confidence search results in the background</string>
<!-- Title of dialog for search preloading [CHAR LIMIT=40] -->
<string name="pref_data_preload_dialogtitle">Search result preloading</string>
+ <!-- Title for link prefetching [CHAR LIMIT=40] -->
+ <string name="pref_link_prefetch_title">Web page preloading</string>
+ <!-- Link prefetching options [CHAR LIMIT=20] -->
+ <string-array name="pref_link_prefetch_choices">
+ <item>Never</item>
+ <item>Only on Wi-Fi</item>
+ <item>Always</item>
+ </string-array>
+ <!-- Do not translate -->
+ <string name="pref_link_prefetch_value_never" translatable="false">NEVER</string>
+ <string name="pref_link_prefetch_value_wifi_only" translatable="false">WIFI_ONLY</string>
+ <string name="pref_link_prefetch_value_always" translatable="false">ALWAYS</string>
+ <string name="pref_link_prefetch_default_value" translatable="false">@string/pref_link_prefetch_value_wifi_only</string>
+ <string-array name="pref_link_prefetch_values" translatable="false">
+ <item><xliff:g>@string/pref_link_prefetch_value_never</xliff:g></item>
+ <item><xliff:g>@string/pref_link_prefetch_value_wifi_only</xliff:g></item>
+ <item><xliff:g>@string/pref_link_prefetch_value_always</xliff:g></item>
+ </string-array>
+ <!-- Summary for link prefetching [CHAR LIMIT=80] -->
+ <string name="pref_link_prefetch_summary">Allow browser to preload linked web pages in the background</string>
+ <!-- Title of dialog for link prefetching [CHAR LIMIT=40] -->
+ <string name="pref_link_prefetch_dialogtitle">Web page preloading</string>
<!-- Title for a dialog displayed when the browser has a data connectivity
problem -->
<string name="browserFrameNetworkErrorLabel">Connection problem</string>
@@ -763,14 +785,9 @@
<!-- Do not translate. Testing only -->
<string name="dump_nav" translatable="false">Dump navigation cache</string>
- <!-- The default homepage. If it starts with "http://www.google" and the
- user signs up the device with a Google sites account, the site's
- domain will be appended. -->
+ <!-- The default homepage. -->
<string name="homepage_base" translatable="false">
- http://www.google.com/webhp?client={CID}&source=android-home</string>
- <!-- The default url for the instant_base_page. -->
- <string name="instant_base" translatable="false">
- http://www.google.com/webhp?client={CID}&source=android-instant&ion=1</string>
+ https://www.google.com/webhp?client={CID}&source=android-home</string>
<!-- Bookmarks -->
<string-array name="bookmarks" translatable="false">
diff --git a/res/xml/bandwidth_preferences.xml b/res/xml/bandwidth_preferences.xml
index bb1688e..9946b48 100644
--- a/res/xml/bandwidth_preferences.xml
+++ b/res/xml/bandwidth_preferences.xml
@@ -24,6 +24,14 @@
android:entryValues="@array/pref_data_preload_values"
android:dialogTitle="@string/pref_data_preload_dialogtitle" />
+ <ListPreference
+ android:key="link_prefetch_when"
+ android:title="@string/pref_link_prefetch_title"
+ android:summary="@string/pref_link_prefetch_summary"
+ android:entries="@array/pref_link_prefetch_choices"
+ android:entryValues="@array/pref_link_prefetch_values"
+ android:dialogTitle="@string/pref_link_prefetch_dialogtitle" />
+
<CheckBoxPreference
android:key="load_images"
android:defaultValue="true"
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 4fe93d6..415e72d 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -22,6 +22,8 @@
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
import android.os.Build;
import android.os.Message;
import android.preference.PreferenceManager;
@@ -115,6 +117,9 @@
private boolean mNeedsSharedSync = true;
private float mFontSizeMult = 1.0f;
+ // Current state of network-dependent settings
+ private boolean mLinkPrefetchAllowed = true;
+
// Cached values
private int mPageCacheCapacity = 1;
private String mAppCachePath;
@@ -290,6 +295,8 @@
settings.setProperty(WebViewProperties.gfxEnableCpuUploadPath,
enableCpuUploadPath() ? "true" : "false");
}
+
+ settings.setLinkPrefetchEnabled(mLinkPrefetchAllowed);
}
/**
@@ -361,8 +368,7 @@
syncManagedSettings();
if (PREF_SEARCH_ENGINE.equals(key)) {
updateSearchEngine(false);
- }
- if (PREF_FULLSCREEN.equals(key)) {
+ } else if (PREF_FULLSCREEN.equals(key)) {
if (mController.getUi() != null) {
mController.getUi().setFullscreen(useFullscreen());
}
@@ -370,6 +376,8 @@
if (mController.getUi() != null) {
mController.getUi().setUseQuickControls(sharedPreferences.getBoolean(key, false));
}
+ } else if (PREF_LINK_PREFETCH.equals(key)) {
+ updateConnectionType();
}
}
@@ -576,6 +584,37 @@
return mPrefs;
}
+ // update connectivity-dependent options
+ public void updateConnectionType() {
+ ConnectivityManager cm = (ConnectivityManager)
+ mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
+ String linkPrefetchPreference = getLinkPrefetchEnabled();
+ boolean linkPrefetchAllowed = linkPrefetchPreference.
+ equals(getLinkPrefetchAlwaysPreferenceString(mContext));
+ NetworkInfo ni = cm.getActiveNetworkInfo();
+ if (ni != null) {
+ switch (ni.getType()) {
+ case ConnectivityManager.TYPE_WIFI:
+ case ConnectivityManager.TYPE_ETHERNET:
+ case ConnectivityManager.TYPE_BLUETOOTH:
+ linkPrefetchAllowed |= linkPrefetchPreference.
+ equals(getLinkPrefetchOnWifiOnlyPreferenceString(mContext));
+ break;
+ case ConnectivityManager.TYPE_MOBILE:
+ case ConnectivityManager.TYPE_MOBILE_DUN:
+ case ConnectivityManager.TYPE_MOBILE_MMS:
+ case ConnectivityManager.TYPE_MOBILE_SUPL:
+ case ConnectivityManager.TYPE_WIMAX:
+ default:
+ break;
+ }
+ }
+ if (mLinkPrefetchAllowed != linkPrefetchAllowed) {
+ mLinkPrefetchAllowed = linkPrefetchAllowed;
+ syncManagedSettings();
+ }
+ }
+
// -----------------------------
// getter/setters for accessibility_preferences.xml
// -----------------------------
@@ -858,6 +897,30 @@
return mPrefs.getString(PREF_DATA_PRELOAD, getDefaultPreloadSetting());
}
+ public static String getLinkPrefetchOnWifiOnlyPreferenceString(Context context) {
+ return context.getResources().getString(R.string.pref_link_prefetch_value_wifi_only);
+ }
+
+ public static String getLinkPrefetchAlwaysPreferenceString(Context context) {
+ return context.getResources().getString(R.string.pref_link_prefetch_value_always);
+ }
+
+ private static final String DEFAULT_LINK_PREFETCH_SECURE_SETTING_KEY =
+ "browser_default_link_prefetch_setting";
+
+ public String getDefaultLinkPrefetchSetting() {
+ String preload = Settings.Secure.getString(mContext.getContentResolver(),
+ DEFAULT_LINK_PREFETCH_SECURE_SETTING_KEY);
+ if (preload == null) {
+ preload = mContext.getResources().getString(R.string.pref_link_prefetch_default_value);
+ }
+ return preload;
+ }
+
+ public String getLinkPrefetchEnabled() {
+ return mPrefs.getString(PREF_LINK_PREFETCH, getDefaultLinkPrefetchSetting());
+ }
+
// -----------------------------
// getter/setters for browser recovery
// -----------------------------
diff --git a/src/com/android/browser/NetworkStateHandler.java b/src/com/android/browser/NetworkStateHandler.java
index 4ae91ba..4480664 100644
--- a/src/com/android/browser/NetworkStateHandler.java
+++ b/src/com/android/browser/NetworkStateHandler.java
@@ -26,6 +26,8 @@
import android.webkit.WebView;
import android.webkit.WebViewClassic;
+import com.android.browser.BrowserSettings;
+
/**
* Handle network state changes
*/
@@ -68,6 +70,7 @@
String subtypeName = info.getSubtypeName();
sendNetworkType(typeName.toLowerCase(),
(subtypeName != null ? subtypeName.toLowerCase() : ""));
+ BrowserSettings.getInstance().updateConnectionType();
boolean noConnection = intent.getBooleanExtra(
ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
@@ -87,6 +90,7 @@
void onResume() {
mActivity.registerReceiver(mNetworkStateIntentReceiver,
mNetworkStateChangedFilter);
+ BrowserSettings.getInstance().updateConnectionType();
}
/**
@@ -114,5 +118,4 @@
WebViewClassic.fromWebView(w).setNetworkType(type, subtype);
}
}
-
}
diff --git a/src/com/android/browser/PreferenceKeys.java b/src/com/android/browser/PreferenceKeys.java
index 1a20495..ff42aaf 100644
--- a/src/com/android/browser/PreferenceKeys.java
+++ b/src/com/android/browser/PreferenceKeys.java
@@ -102,6 +102,7 @@
// Keys for bandwidth_preferences.xml
// ----------------------
static final String PREF_DATA_PRELOAD = "preload_when";
+ static final String PREF_LINK_PREFETCH = "link_prefetch_when";
static final String PREF_LOAD_IMAGES = "load_images";
// ----------------------
diff --git a/src/com/android/browser/preferences/BandwidthPreferencesFragment.java b/src/com/android/browser/preferences/BandwidthPreferencesFragment.java
index 2c147cc..0cb064a 100644
--- a/src/com/android/browser/preferences/BandwidthPreferencesFragment.java
+++ b/src/com/android/browser/preferences/BandwidthPreferencesFragment.java
@@ -16,9 +16,11 @@
package com.android.browser.preferences;
+import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.PreferenceFragment;
+import android.preference.PreferenceScreen;
import com.android.browser.BrowserSettings;
import com.android.browser.PreferenceKeys;
@@ -38,15 +40,24 @@
@Override
public void onResume() {
super.onResume();
- if (!getPreferenceScreen().getSharedPreferences()
- .contains(PreferenceKeys.PREF_DATA_PRELOAD)) {
+ PreferenceScreen prefScreen = getPreferenceScreen();
+ SharedPreferences sharedPrefs = prefScreen.getSharedPreferences();
+ if (!sharedPrefs.contains(PreferenceKeys.PREF_DATA_PRELOAD)) {
// set default value for preload setting
- ListPreference preload = (ListPreference) getPreferenceScreen().findPreference(
+ ListPreference preload = (ListPreference) prefScreen.findPreference(
PreferenceKeys.PREF_DATA_PRELOAD);
if (preload != null) {
preload.setValue(BrowserSettings.getInstance().getDefaultPreloadSetting());
}
}
+ if (!sharedPrefs.contains(PreferenceKeys.PREF_LINK_PREFETCH)) {
+ // set default value for link prefetch setting
+ ListPreference prefetch = (ListPreference) prefScreen.findPreference(
+ PreferenceKeys.PREF_LINK_PREFETCH);
+ if (prefetch != null) {
+ prefetch.setValue(BrowserSettings.getInstance().getDefaultLinkPrefetchSetting());
+ }
+ }
}
}
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;
}
diff --git a/tools/get_search_engines.py b/tools/get_search_engines.py
index 86393f1..17916c8 100755
--- a/tools/get_search_engines.py
+++ b/tools/get_search_engines.py
@@ -39,9 +39,9 @@
google_data = ["google", "Google", "google.com",
"http://www.google.com/favicon.ico",
- "http://www.google.com/search?hl={language}&ie={inputEncoding}&source=android-browser&q={searchTerms}",
+ "http://www.google.com/search?ie={inputEncoding}&source=android-browser&q={searchTerms}",
"UTF-8",
- "http://www.google.com/complete/search?hl={language}&client=android&q={searchTerms}"]
+ "http://www.google.com/complete/search?client=android&q={searchTerms}"]
class SearchEngineManager(object):
"""Manages list of search engines and creates locale specific lists.