Browser: add homepage and bookmark feature
Add specified homepage and bookmarks for carrier.
CRs-Fixed: 516137 516140 516141
Change-Id: I923e41e376685e0d5c45b8ce8f2e523d56492680
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 95afa71..c390ab6 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -22,14 +22,17 @@
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
+import android.content.res.AssetManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Build;
import android.os.Message;
+import android.os.SystemProperties;
import android.preference.PreferenceManager;
import android.provider.Browser;
import android.provider.Settings;
import android.util.DisplayMetrics;
+import android.util.Log;
import android.webkit.CookieManager;
import android.webkit.GeolocationPermissions;
import android.webkit.WebIconDatabase;
@@ -49,9 +52,11 @@
import com.android.browser.search.SearchEngine;
import com.android.browser.search.SearchEngines;
+import java.io.InputStream;
import java.lang.ref.WeakReference;
import java.util.Iterator;
import java.util.LinkedList;
+import java.util.Locale;
import java.util.WeakHashMap;
/**
@@ -129,6 +134,9 @@
private static String sFactoryResetUrl;
+ // add for carrier feature
+ private static Context sResPackageCtx;
+
public static void initialize(final Context context) {
sInstance = new BrowserSettings(context);
}
@@ -144,6 +152,16 @@
mManagedSettings = new LinkedList<WeakReference<WebSettings>>();
mCustomUserAgents = new WeakHashMap<WebSettings, String>();
mAutofillHandler.asyncLoadFromDb();
+
+ // add for carrier feature
+ try {
+ sResPackageCtx = context.createPackageContext(
+ "com.android.browser.res",
+ Context.CONTEXT_IGNORE_SECURITY);
+ } catch (Exception e) {
+ Log.e("Res_Update", "Create Res Apk Failed");
+ }
+
BackgroundHandler.execute(mSetup);
}
@@ -225,7 +243,60 @@
mPrefs.edit().remove(PREF_TEXT_SIZE).apply();
}
- sFactoryResetUrl = mContext.getResources().getString(R.string.homepage_base);
+
+ // add for carrier homepage feature
+ String browserRes = SystemProperties.get("persist.env.c.browser.resource", "default");
+ if ("cu".equals(browserRes)) {
+ int resID = sResPackageCtx.getResources().getIdentifier(
+ "homepage_base", "string", "com.android.browser.res");
+ sFactoryResetUrl = sResPackageCtx.getResources().getString(resID);
+ } else if ("ct".equals(browserRes)) {
+ int resID = sResPackageCtx.getResources().getIdentifier(
+ "homepage_base", "string", "com.android.browser.res");
+ sFactoryResetUrl = sResPackageCtx.getResources().getString(resID);
+
+ int pathID = sResPackageCtx.getResources().getIdentifier(
+ "homepage_path", "string", "com.android.browser.res");
+ String path = sResPackageCtx.getResources().getString(pathID);
+ Locale locale = Locale.getDefault();
+ path = path.replace("%y", locale.getLanguage().toLowerCase());
+ path = path.replace("%z", '_'+locale.getCountry().toLowerCase());
+ boolean useCountry = true;
+ boolean useLanguage = true;
+ InputStream is = null;
+ AssetManager am = mContext.getAssets();
+ try {
+ is = am.open(path);
+ } catch (Exception ignored) {
+ useCountry = false;
+ path = sResPackageCtx.getResources().getString(pathID);
+ path = path.replace("%y", locale.getLanguage().toLowerCase());
+ path = path.replace("%z", "");
+ try {
+ is = am.open(path);
+ } catch (Exception ignoredlanguage) {
+ useLanguage = false;
+ }
+ } finally {
+ if (is != null) {
+ try {
+ is.close();
+ } catch (Exception ignored) {}
+ }
+ }
+
+ if (!useCountry && !useLanguage) {
+ sFactoryResetUrl = sFactoryResetUrl.replace("%y%z", "en");
+ } else {
+ sFactoryResetUrl = sFactoryResetUrl.replace("%y",
+ locale.getLanguage().toLowerCase());
+ sFactoryResetUrl = sFactoryResetUrl.replace("%z", useCountry ?
+ '_' + locale.getCountry().toLowerCase() : "");
+ }
+ } else {
+ sFactoryResetUrl = mContext.getResources().getString(R.string.homepage_base);
+ }
+
if (sFactoryResetUrl.indexOf("{CID}") != -1) {
sFactoryResetUrl = sFactoryResetUrl.replace("{CID}",
BrowserProvider.getClientId(mContext.getContentResolver()));