| Index: chrome/android/java_staging/src/org/chromium/chrome/browser/DeferredStartupHandler.java
|
| diff --git a/chrome/android/java_staging/src/org/chromium/chrome/browser/DeferredStartupHandler.java b/chrome/android/java_staging/src/org/chromium/chrome/browser/DeferredStartupHandler.java
|
| index bd54eaa535c10a8bb4bbbac55816a91cd438cbf3..a8c27884935d0cfc552c7e20bd9d0574b3300df4 100644
|
| --- a/chrome/android/java_staging/src/org/chromium/chrome/browser/DeferredStartupHandler.java
|
| +++ b/chrome/android/java_staging/src/org/chromium/chrome/browser/DeferredStartupHandler.java
|
| @@ -4,7 +4,9 @@
|
|
|
| package org.chromium.chrome.browser;
|
|
|
| +import android.content.Context;
|
| import android.os.AsyncTask;
|
| +import android.text.TextUtils;
|
|
|
| import org.chromium.base.PowerMonitor;
|
| import org.chromium.base.ThreadUtils;
|
| @@ -20,11 +22,20 @@ import org.chromium.chrome.browser.precache.PrecacheLauncher;
|
| import org.chromium.chrome.browser.preferences.ChromePreferenceManager;
|
| import org.chromium.chrome.browser.preferences.privacy.PrivacyPreferencesManager;
|
| import org.chromium.chrome.browser.share.ShareHelper;
|
| +import org.chromium.components.variations.VariationsAssociatedData;
|
| +import org.chromium.content.browser.ChildProcessLauncher;
|
|
|
| /**
|
| * Handler for application level tasks to be completed on deferred startup.
|
| */
|
| public class DeferredStartupHandler {
|
| + // Constants for trial of moderate binding support.
|
| + private static final String MODERATE_BINDING_TRIAL_NAME = "MobileModerateBinding";
|
| + private static final String MODERATE_BINDING_LOW_REDUCE_RATIO_PARAM = "low_reduce_ratio";
|
| + private static final String MODERATE_BINDING_HIGH_REDUCE_RATIO_PARAM = "high_reduce_ratio";
|
| + private static final String MODERATE_BINDING_ENABLED_PARAM = "enabled";
|
| + private static final float DEFAULT_MODERATE_BINDING_REDUCE_RATIO = 0.25f;
|
| +
|
| private static DeferredStartupHandler sDeferredStartupHandler;
|
| private boolean mDeferredStartupComplete;
|
|
|
| @@ -105,9 +116,38 @@ public class DeferredStartupHandler {
|
| // Clear any media notifications that existed when Chrome was last killed.
|
| MediaNotificationService.clearMediaNotifications(application);
|
|
|
| + startModerateBindingManagementIfNeeded(application);
|
| +
|
| mDeferredStartupComplete = true;
|
| }
|
|
|
| + private static float parseFloat(String value, float defaultValue) {
|
| + try {
|
| + return TextUtils.isEmpty(value) ? defaultValue : Float.parseFloat(value);
|
| + } catch (NumberFormatException e) {
|
| + return defaultValue;
|
| + }
|
| + }
|
| +
|
| + private static void startModerateBindingManagementIfNeeded(Context context) {
|
| + String enabledValue = VariationsAssociatedData.getVariationParamValue(
|
| + MODERATE_BINDING_TRIAL_NAME, MODERATE_BINDING_ENABLED_PARAM);
|
| + if (!Boolean.parseBoolean(enabledValue)) return;
|
| +
|
| + String lowReduceRatioValue = VariationsAssociatedData.getVariationParamValue(
|
| + MODERATE_BINDING_TRIAL_NAME, MODERATE_BINDING_LOW_REDUCE_RATIO_PARAM);
|
| + String highReduceRatioValue = VariationsAssociatedData.getVariationParamValue(
|
| + MODERATE_BINDING_TRIAL_NAME, MODERATE_BINDING_HIGH_REDUCE_RATIO_PARAM);
|
| + float lowReduceRatio =
|
| + parseFloat(lowReduceRatioValue, DEFAULT_MODERATE_BINDING_REDUCE_RATIO);
|
| + float highReduceRatio =
|
| + parseFloat(highReduceRatioValue, DEFAULT_MODERATE_BINDING_REDUCE_RATIO * 2);
|
| + highReduceRatio = Math.max(0, Math.min(1, highReduceRatio));
|
| + lowReduceRatio = Math.max(0, Math.min(highReduceRatio, lowReduceRatio));
|
| + ChildProcessLauncher.startModerateBindingManagement(
|
| + context, lowReduceRatio, highReduceRatio);
|
| + }
|
| +
|
| /**
|
| * @return Whether deferred startup has been completed.
|
| */
|
|
|