Chromium Code Reviews| 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)) { |
|
Alexei Svitkine (slow)
2015/06/17 16:57:22
Can you make this a param as well?
(Or check Star
Jaekyun Seok (inactive)
2015/06/17 22:31:50
Done.
|
| + 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)) { |
|
Alexei Svitkine (slow)
2015/06/17 16:57:22
Nit: Maybe make a helper function to avoid the ext
Jaekyun Seok (inactive)
2015/06/17 22:31:50
Done.
|
| + 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. |
| */ |