Index: chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java |
index 4b12c62147959447a43bc558850e985ad77e00ad..0146ecbab058171f8ead7a9697f78123e5d07480 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java |
@@ -65,6 +65,7 @@ import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomiza |
import org.chromium.chrome.browser.physicalweb.PhysicalWebBleClient; |
import org.chromium.chrome.browser.policy.PolicyAuditor; |
import org.chromium.chrome.browser.preferences.AccessibilityPreferences; |
+import org.chromium.chrome.browser.preferences.ChromePreferenceManager; |
import org.chromium.chrome.browser.preferences.LocationSettings; |
import org.chromium.chrome.browser.preferences.PrefServiceBridge; |
import org.chromium.chrome.browser.preferences.Preferences; |
@@ -103,6 +104,7 @@ import org.chromium.sync.signin.SystemAccountManagerDelegate; |
import org.chromium.ui.UiUtils; |
import org.chromium.ui.base.ActivityWindowAndroid; |
import org.chromium.ui.base.ResourceBundle; |
+import org.chromium.ui.widget.Toast; |
import java.lang.ref.WeakReference; |
import java.util.Locale; |
@@ -124,6 +126,7 @@ public class ChromeApplication extends ContentApplication { |
private static final String DEV_TOOLS_SERVER_SOCKET_PREFIX = "chrome"; |
private static final String SESSIONS_UUID_PREF_KEY = "chromium.sync.sessions.id"; |
+ private static boolean sIsFinishedCachingNativeFlags; |
private static DocumentTabModelSelector sDocumentTabModelSelector; |
/** |
@@ -248,6 +251,7 @@ public class ChromeApplication extends ContentApplication { |
assert mIsProcessInitialized; |
onForegroundSessionStart(); |
+ cacheNativeFlags(); |
} |
/** |
@@ -849,4 +853,21 @@ public class ChromeApplication extends ContentApplication { |
PrefServiceBridge.getInstance().setPasswordEchoEnabled(systemEnabled); |
} |
+ |
+ /** |
+ * Caches flags that are needed by Activities that launch before the native library is loaded |
+ * and stores them in SharedPreferences. Because this function is called during launch after the |
+ * library has loaded, they won't affect the next launch until Chrome is restarted. |
+ */ |
+ private void cacheNativeFlags() { |
+ if (sIsFinishedCachingNativeFlags) return; |
+ |
+ boolean isToastNeeded = ChromePreferenceManager.getInstance(this).cacheHerbFlavor(); |
+ if (isToastNeeded) { |
+ Toast.makeText(this, |
+ R.string.cache_native_flags_requires_restart, Toast.LENGTH_SHORT).show(); |
+ } |
+ |
+ sIsFinishedCachingNativeFlags = true; |
+ } |
} |