| Index: chrome/android/java/src/org/chromium/chrome/browser/init/NativeInitializationController.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/NativeInitializationController.java b/chrome/android/java/src/org/chromium/chrome/browser/init/NativeInitializationController.java
|
| index fc021528f5dadcaaaa1433e64ce964da9cee6b2f..a4835818eea5efe4527de6b06626dd528e699f7c 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/init/NativeInitializationController.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/init/NativeInitializationController.java
|
| @@ -93,6 +93,8 @@ class NativeInitializationController {
|
| public void startBackgroundTasks(final boolean allocateChildConnection) {
|
| ThreadUtils.assertOnUiThread();
|
|
|
| + // TODO(asvitkine): Consider moving this logic to a singleton, like
|
| + // ChromeBrowserInitializer.
|
| if (shouldFetchVariationsSeedBeforeFRE()) {
|
| Context context = ContextUtils.getApplicationContext();
|
| Intent initialIntent = mActivityDelegate.getInitialIntent();
|
| @@ -105,6 +107,10 @@ class NativeInitializationController {
|
| new BroadcastReceiver() {
|
| @Override
|
| public void onReceive(Context context, Intent intent) {
|
| + // This check is needed because onReceive() can be called multiple
|
| + // times even after having unregistered below if two broadcasts
|
| + // arrive in rapid succession.
|
| + if (!mWaitingForVariationsFetch) return;
|
| mWaitingForVariationsFetch = false;
|
| manager.unregisterReceiver(this);
|
| signalNativeLibraryLoadedIfReady();
|
|
|