| 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..6e157e2d3e897426ff7cd7dd87b1966678060ff6 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,8 +4,11 @@
|
|
|
| package org.chromium.chrome.browser;
|
|
|
| +import android.content.Context;
|
| import android.os.AsyncTask;
|
| +import android.text.TextUtils;
|
|
|
| +import org.chromium.base.FieldTrialList;
|
| import org.chromium.base.PowerMonitor;
|
| import org.chromium.base.ThreadUtils;
|
| import org.chromium.base.TraceEvent;
|
| @@ -20,11 +23,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_DISABLED_VALUE = "Disabled";
|
| + private static final float DEFAULT_MODERATE_BINDING_REDUCE_RATIO = 0.25f;
|
| +
|
| private static DeferredStartupHandler sDeferredStartupHandler;
|
| private boolean mDeferredStartupComplete;
|
|
|
| @@ -105,9 +117,43 @@ public class DeferredStartupHandler {
|
| // Clear any media notifications that existed when Chrome was last killed.
|
| MediaNotificationService.clearMediaNotifications(application);
|
|
|
| + startModerateBindingManagementIfNeeded(application);
|
| +
|
| mDeferredStartupComplete = true;
|
| }
|
|
|
| + private static void startModerateBindingManagementIfNeeded(Context context) {
|
| + String trialName = FieldTrialList.findFullName(MODERATE_BINDING_TRIAL_NAME);
|
| + if (TextUtils.isEmpty(trialName)
|
| + || MODERATE_BINDING_DISABLED_VALUE.equalsIgnoreCase(trialName)) {
|
| + 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 = DEFAULT_MODERATE_BINDING_REDUCE_RATIO;
|
| + float highReduceRatio = DEFAULT_MODERATE_BINDING_REDUCE_RATIO * 2;
|
| + if (!TextUtils.isEmpty(lowReduceRatioValue)) {
|
| + try {
|
| + lowReduceRatio = Float.parseFloat(lowReduceRatioValue);
|
| + } catch (NumberFormatException e) {
|
| + // Ignore exception.
|
| + }
|
| + }
|
| + if (!TextUtils.isEmpty(highReduceRatioValue)) {
|
| + try {
|
| + highReduceRatio = Float.parseFloat(highReduceRatioValue);
|
| + } catch (NumberFormatException e) {
|
| + // Ignore exception.
|
| + }
|
| + }
|
| + 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.
|
| */
|
|
|