diff options
author | dfalcantara <dfalcantara@chromium.org> | 2016-02-24 17:23:27 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-02-25 01:24:28 +0000 |
commit | b584cb20c80e31ab5ac85a9269e92efaa2cfbcf7 (patch) | |
tree | ce792376f920f26330d99992edf351371336881d | |
parent | 7bf86e45b5f758e3220ea3e57745c1549f392ef1 (diff) | |
download | chromium_src-b584cb20c80e31ab5ac85a9269e92efaa2cfbcf7.zip chromium_src-b584cb20c80e31ab5ac85a9269e92efaa2cfbcf7.tar.gz chromium_src-b584cb20c80e31ab5ac85a9269e92efaa2cfbcf7.tar.bz2 |
[Herb] Set up field trial for UI prototypes
* Add a field trial for bucketing users into different prototypes.
The trial stores the herb flavor in a variations param.
* Consolidate Herb string checking into FeatureUtilities, which
checks whether VariationsAssociatedParams are active and
whether they're overridden by about:flags.
* Adds a "disabled" group to about:flags to explicitly disable the
experiment, users on about:flags now default to whatever they're
bucketed into.
* Stop toasting to the user that they need the restart Chrome for
cached experiment flags to take effect. Users won't understand
why this is relevant.
BUG=582539
Review URL: https://codereview.chromium.org/1716313002
Cr-Commit-Position: refs/heads/master@{#377454}
13 files changed, 155 insertions, 83 deletions
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 739bf2c..b06f9e9 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java @@ -65,7 +65,6 @@ 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; @@ -104,7 +103,6 @@ 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; @@ -866,13 +864,7 @@ public class ChromeApplication extends ContentApplication { */ private void cacheNativeFlags() { if (sIsFinishedCachingNativeFlags) return; - - boolean isToastNeeded = ChromePreferenceManager.cacheHerbFlavor(); - if (isToastNeeded) { - Toast.makeText(this, - R.string.cache_native_flags_requires_restart, Toast.LENGTH_SHORT).show(); - } - + FeatureUtilities.cacheHerbFlavor(); sIsFinishedCachingNativeFlags = true; } } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java index 06157fe..6116242 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java @@ -227,11 +227,20 @@ public abstract class ChromeSwitches { * Determines which of the Herb prototypes is being tested. * See about:flags for descriptions. */ - public static final String HERB_FLAVOR = "tab-management-experiment-type"; - public static final String HERB_FLAVOR_ANISE = "anise"; - public static final String HERB_FLAVOR_BASIL = "basil"; - public static final String HERB_FLAVOR_CHIVE = "chive"; - public static final String HERB_FLAVOR_DILL = "dill"; + public static final String HERB_FLAVOR_DISABLED_SWITCH = + "tab-management-experiment-type-disabled"; + public static final String HERB_FLAVOR_ANISE_SWITCH = "tab-management-experiment-type-anise"; + public static final String HERB_FLAVOR_BASIL_SWITCH = "tab-management-experiment-type-basil"; + public static final String HERB_FLAVOR_CHIVE_SWITCH = "tab-management-experiment-type-chive"; + public static final String HERB_FLAVOR_DILL_SWITCH = "tab-management-experiment-type-dill"; + + public static final String HERB_FLAVOR_DEFAULT = "Default"; + public static final String HERB_FLAVOR_CONTROL = "Control"; + public static final String HERB_FLAVOR_DISABLED = "Disabled"; + public static final String HERB_FLAVOR_ANISE = "Anise"; + public static final String HERB_FLAVOR_BASIL = "Basil"; + public static final String HERB_FLAVOR_CHIVE = "Chive"; + public static final String HERB_FLAVOR_DILL = "Dill"; /** * Enable tab switcher in document mode (merged tabs and apps option). diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java index f92ddbe..174fe57 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java @@ -765,7 +765,7 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode boolean isAllowedToReturnToExternalApp = IntentUtils.safeGetBooleanExtra(intent, ChromeLauncherActivity.EXTRA_IS_ALLOWED_TO_RETURN_TO_PARENT, true); - String herbFlavor = ChromePreferenceManager.getHerbFlavor(); + String herbFlavor = FeatureUtilities.getHerbFlavor(); if (isAllowedToReturnToExternalApp && ChromeLauncherActivity.canBeHijackedByHerb(intent) && TextUtils.equals(ChromeSwitches.HERB_FLAVOR_DILL, herbFlavor)) { @@ -1110,7 +1110,7 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode if (alwaysAllowTabClosure) { isAllowedToCloseTab = true; } else { - String herbFlavor = ChromePreferenceManager.getHerbFlavor(); + String herbFlavor = FeatureUtilities.getHerbFlavor(); if (TextUtils.equals(ChromeSwitches.HERB_FLAVOR_BASIL, herbFlavor) || TextUtils.equals(ChromeSwitches.HERB_FLAVOR_CHIVE, herbFlavor)) { isAllowedToCloseTab = !currentTab.isAllowedToReturnToExternalApp(); diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java index 79c6db4..d0ad74c 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java @@ -26,8 +26,9 @@ import org.chromium.base.Log; import org.chromium.base.VisibleForTesting; import org.chromium.chrome.R; import org.chromium.chrome.browser.ChromeActivity; +import org.chromium.chrome.browser.ChromeSwitches; import org.chromium.chrome.browser.IntentHandler; -import org.chromium.chrome.browser.preferences.ChromePreferenceManager; +import org.chromium.chrome.browser.util.FeatureUtilities; import org.chromium.chrome.browser.util.IntentUtils; import org.chromium.chrome.browser.widget.TintedDrawable; @@ -422,7 +423,11 @@ public class CustomTabIntentDataProvider { * @param context Context for the package. */ private void parseHerbExtras(Intent intent, Context context) { - if (TextUtils.isEmpty(ChromePreferenceManager.getHerbFlavor())) return; + String herbFlavor = FeatureUtilities.getHerbFlavor(); + if (TextUtils.isEmpty(herbFlavor) + || TextUtils.equals(ChromeSwitches.HERB_FLAVOR_DISABLED, herbFlavor)) { + return; + } if (!IntentHandler.isIntentChromeOrFirstParty(intent, context)) return; mFinishAfterOpeningInBrowser = IntentUtils.safeGetBooleanExtra( diff --git a/chrome/android/java/src/org/chromium/chrome/browser/document/ChromeLauncherActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/document/ChromeLauncherActivity.java index aa47784..70d9313 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/document/ChromeLauncherActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/document/ChromeLauncherActivity.java @@ -322,8 +322,9 @@ public class ChromeLauncherActivity extends Activity if (!canBeHijackedByHerb(getIntent())) return false; // Different Herb flavors handle incoming intents differently. - String flavor = ChromePreferenceManager.getHerbFlavor(); - if (TextUtils.isEmpty(flavor)) { + String flavor = FeatureUtilities.getHerbFlavor(); + if (TextUtils.isEmpty(flavor) + || TextUtils.equals(ChromeSwitches.HERB_FLAVOR_DISABLED, flavor)) { return false; } else if (TextUtils.equals(flavor, ChromeSwitches.HERB_FLAVOR_ANISE) || TextUtils.equals(flavor, ChromeSwitches.HERB_FLAVOR_BASIL) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceManager.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceManager.java index 5424939..b7450d8 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceManager.java @@ -6,19 +6,13 @@ package org.chromium.chrome.browser.preferences; import android.content.Context; import android.content.SharedPreferences; -import android.os.StrictMode; import android.preference.PreferenceManager; -import android.text.TextUtils; -import org.chromium.base.ApplicationStatus; -import org.chromium.base.CommandLine; -import org.chromium.base.Log; import org.chromium.base.annotations.SuppressFBWarnings; import org.chromium.chrome.browser.ChromeSwitches; -import org.chromium.chrome.browser.ChromeVersionInfo; import org.chromium.chrome.browser.crash.MinidumpUploadService.ProcessType; import org.chromium.chrome.browser.signin.SigninPromoUma; -import org.chromium.ui.base.DeviceFormFactor; +import org.chromium.chrome.browser.util.FeatureUtilities; import java.util.Locale; @@ -59,8 +53,6 @@ public class ChromePreferenceManager { private static final long MILLISECONDS_IN_DAY = 1000 * 60 * 60 * 24; private static ChromePreferenceManager sPrefs; - private static String sCachedHerbFlavor; - private static boolean sIsHerbFlavorCached; private final SharedPreferences mSharedPreferences; private final Context mContext; @@ -333,51 +325,18 @@ public class ChromePreferenceManager { } /** - * @return Which flavor of Herb is active, or null if a prototype isn't being tested. + * @return Which UI prototype the user is testing. This is cached from native via + * {@link FeatureUtilities#cacheHerbFlavor}. */ - public static String getHerbFlavor() { - if (!sIsHerbFlavorCached) { - Context context = ApplicationStatus.getApplicationContext(); - if (ChromeVersionInfo.isStableBuild() || ChromeVersionInfo.isBetaBuild()) return null; - if (DeviceFormFactor.isTablet(context)) return null; - - // Allowing disk access for preferences while prototyping. - sCachedHerbFlavor = null; - StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads(); - try { - sCachedHerbFlavor = - ChromePreferenceManager.getInstance(context).getHerbFlavorInternal(); - } finally { - StrictMode.setThreadPolicy(oldPolicy); - } - - sIsHerbFlavorCached = true; - Log.d(TAG, "Retrieved Herb flavor: " + sCachedHerbFlavor); - } - - return sCachedHerbFlavor; - } - - private String getHerbFlavorInternal() { - return mSharedPreferences.getString(HERB_FLAVOR_KEY, null); + public String getCachedHerbFlavor() { + return mSharedPreferences.getString(HERB_FLAVOR_KEY, ChromeSwitches.HERB_FLAVOR_DISABLED); } /** - * Caches which flavor of Herb the user prefers from native. + * Caches which UI prototype the user is testing. */ - public static boolean cacheHerbFlavor() { - String oldFlavor = getHerbFlavor(); - String newFlavor = - CommandLine.getInstance().getSwitchValue(ChromeSwitches.HERB_FLAVOR, null); - sCachedHerbFlavor = newFlavor; - Log.d(TAG, "Caching Herb flavor: " + sCachedHerbFlavor); - - if (!TextUtils.equals(oldFlavor, newFlavor)) { - Context context = ApplicationStatus.getApplicationContext(); - ChromePreferenceManager.getInstance(context).writeString(HERB_FLAVOR_KEY, newFlavor); - return true; - } - return false; + public void setCachedHerbFlavor(String flavor) { + writeString(HERB_FLAVOR_KEY, flavor); } /** diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarPhone.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarPhone.java index 5231d42..61fa4f62 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarPhone.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarPhone.java @@ -54,7 +54,6 @@ import org.chromium.chrome.browser.omnibox.LocationBar; import org.chromium.chrome.browser.omnibox.LocationBarPhone; import org.chromium.chrome.browser.omnibox.UrlContainer; import org.chromium.chrome.browser.partnercustomizations.HomepageManager; -import org.chromium.chrome.browser.preferences.ChromePreferenceManager; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.util.ColorUtils; import org.chromium.chrome.browser.util.FeatureUtilities; @@ -2150,7 +2149,7 @@ public class ToolbarPhone extends ToolbarLayout } private boolean isReturnButtonVisible() { - String herbFlavor = ChromePreferenceManager.getHerbFlavor(); + String herbFlavor = FeatureUtilities.getHerbFlavor(); if (!TextUtils.equals(ChromeSwitches.HERB_FLAVOR_BASIL, herbFlavor) && !TextUtils.equals(ChromeSwitches.HERB_FLAVOR_CHIVE, herbFlavor)) { return false; diff --git a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java b/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java index 2089a3b..f1cdf13 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java @@ -12,13 +12,20 @@ import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.os.Build; import android.os.Bundle; +import android.os.StrictMode; import android.os.UserManager; import android.speech.RecognizerIntent; +import android.text.TextUtils; +import org.chromium.base.ApplicationStatus; import org.chromium.base.CommandLine; +import org.chromium.base.FieldTrialList; +import org.chromium.base.Log; import org.chromium.base.ThreadUtils; import org.chromium.base.VisibleForTesting; import org.chromium.chrome.browser.ChromeSwitches; +import org.chromium.chrome.browser.ChromeVersionInfo; +import org.chromium.chrome.browser.preferences.ChromePreferenceManager; import org.chromium.chrome.browser.preferences.DocumentModeManager; import org.chromium.sync.signin.AccountManagerHelper; import org.chromium.ui.base.DeviceFormFactor; @@ -30,9 +37,17 @@ import java.util.List; * this device. */ public class FeatureUtilities { + private static final String TAG = "FeatureUtilities"; + private static final String HERB_EXPERIMENT_NAME = "TabManagementExperiment"; + private static final String HERB_EXPERIMENT_FLAVOR_PARAM = "type"; + private static Boolean sHasGoogleAccountAuthenticator; private static Boolean sHasRecognitionIntentHandler; private static Boolean sDocumentModeDisabled; + + private static String sCachedHerbFlavor; + private static boolean sIsHerbFlavorCached; + /** Used to track if cached command line flags should be refreshed. */ private static CommandLine.ResetListener sResetListener = null; @@ -171,6 +186,83 @@ public class FeatureUtilities { CommandLine.addResetListener(sResetListener); } + /** + * @return Which flavor of Herb is being tested. See {@link ChromeSwitches#HERB_FLAVOR_ANISE} + * and its related switches. + */ + public static String getHerbFlavor() { + if (!sIsHerbFlavorCached) { + sCachedHerbFlavor = null; + + Context context = ApplicationStatus.getApplicationContext(); + if (isDocumentMode(context) || ChromeVersionInfo.isStableBuild() + || ChromeVersionInfo.isBetaBuild() || DeviceFormFactor.isTablet(context)) { + // Disable Herb. + sCachedHerbFlavor = ChromeSwitches.HERB_FLAVOR_DISABLED; + } else { + // Allowing disk access for preferences while prototyping. + StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads(); + try { + sCachedHerbFlavor = + ChromePreferenceManager.getInstance(context).getCachedHerbFlavor(); + } finally { + StrictMode.setThreadPolicy(oldPolicy); + } + } + + sIsHerbFlavorCached = true; + Log.d(TAG, "Retrieved cached Herb flavor: " + sCachedHerbFlavor); + } + + return sCachedHerbFlavor; + } + + /** + * Caches which flavor of Herb the user prefers from native. + */ + public static void cacheHerbFlavor() { + String oldFlavor = getHerbFlavor(); + + // Check the experiment value before the command line to put the user in the correct group. + // The first clause does the null checks so so we can freely use the startsWith() function. + String newFlavor = FieldTrialList.findFullName(HERB_EXPERIMENT_NAME); + Log.d(TAG, "Experiment flavor: " + newFlavor); + if (TextUtils.isEmpty(newFlavor) + || newFlavor.startsWith(ChromeSwitches.HERB_FLAVOR_CONTROL) + || newFlavor.startsWith(ChromeSwitches.HERB_FLAVOR_DEFAULT)) { + newFlavor = ChromeSwitches.HERB_FLAVOR_DISABLED; + } else if (newFlavor.startsWith(ChromeSwitches.HERB_FLAVOR_ANISE)) { + newFlavor = ChromeSwitches.HERB_FLAVOR_ANISE; + } else if (newFlavor.startsWith(ChromeSwitches.HERB_FLAVOR_BASIL)) { + newFlavor = ChromeSwitches.HERB_FLAVOR_BASIL; + } else if (newFlavor.startsWith(ChromeSwitches.HERB_FLAVOR_CHIVE)) { + newFlavor = ChromeSwitches.HERB_FLAVOR_CHIVE; + } else if (newFlavor.startsWith(ChromeSwitches.HERB_FLAVOR_DILL)) { + newFlavor = ChromeSwitches.HERB_FLAVOR_DILL; + } + + CommandLine instance = CommandLine.getInstance(); + if (instance.hasSwitch(ChromeSwitches.HERB_FLAVOR_DISABLED_SWITCH)) { + newFlavor = ChromeSwitches.HERB_FLAVOR_DISABLED; + } else if (instance.hasSwitch(ChromeSwitches.HERB_FLAVOR_ANISE_SWITCH)) { + newFlavor = ChromeSwitches.HERB_FLAVOR_ANISE; + } else if (instance.hasSwitch(ChromeSwitches.HERB_FLAVOR_BASIL_SWITCH)) { + newFlavor = ChromeSwitches.HERB_FLAVOR_BASIL; + } else if (instance.hasSwitch(ChromeSwitches.HERB_FLAVOR_CHIVE_SWITCH)) { + newFlavor = ChromeSwitches.HERB_FLAVOR_CHIVE; + } else if (instance.hasSwitch(ChromeSwitches.HERB_FLAVOR_DILL_SWITCH)) { + newFlavor = ChromeSwitches.HERB_FLAVOR_DILL; + } + + Log.d(TAG, "Caching flavor: " + newFlavor); + sCachedHerbFlavor = newFlavor; + + if (!TextUtils.equals(oldFlavor, newFlavor)) { + Context context = ApplicationStatus.getApplicationContext(); + ChromePreferenceManager.getInstance(context).setCachedHerbFlavor(newFlavor); + } + } + private static native void nativeSetDocumentModeEnabled(boolean enabled); private static native void nativeSetCustomTabVisible(boolean visible); public static native void nativeSetSqlMmapDisabledByDefault(); diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index b5502ed..b1dbcce 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc @@ -528,15 +528,17 @@ const FeatureEntry::Choice kEnableOfflinePagesChoices[] = { }; const FeatureEntry::Choice kHerbPrototypeChoices[] = { - {IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED, "", ""}, + {IDS_GENERIC_EXPERIMENT_CHOICE_DEFAULT, "", ""}, + {IDS_GENERIC_EXPERIMENT_CHOICE_DISABLED, + switches::kTabManagementExperimentTypeDisabled, ""}, {IDS_FLAGS_HERB_PROTOTYPE_FLAVOR_ANISE, - switches::kTabManagementExperimentType, "anise"}, + switches::kTabManagementExperimentTypeAnise, ""}, {IDS_FLAGS_HERB_PROTOTYPE_FLAVOR_BASIL, - switches::kTabManagementExperimentType, "basil"}, + switches::kTabManagementExperimentTypeBasil, ""}, {IDS_FLAGS_HERB_PROTOTYPE_FLAVOR_CHIVE, - switches::kTabManagementExperimentType, "chive"}, + switches::kTabManagementExperimentTypeChive, ""}, {IDS_FLAGS_HERB_PROTOTYPE_FLAVOR_DILL, - switches::kTabManagementExperimentType, "dill"}, + switches::kTabManagementExperimentTypeDill, ""}, }; #endif // defined(OS_ANDROID) diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc index 53b8509..b1be5b9 100644 --- a/chrome/common/chrome_switches.cc +++ b/chrome/common/chrome_switches.cc @@ -1318,7 +1318,16 @@ const char kForceShowUpdateMenuBadge[] = "force-show-update-menu-badge"; const char kMarketUrlForTesting[] = "market-url-for-testing"; // Specifies a particular tab management experiment to enable. -const char kTabManagementExperimentType[] = "tab-management-experiment-type"; +const char kTabManagementExperimentTypeDisabled[] = + "tab-management-experiment-type-disabled"; +const char kTabManagementExperimentTypeAnise[] = + "tab-management-experiment-type-anise"; +const char kTabManagementExperimentTypeBasil[] = + "tab-management-experiment-type-basil"; +const char kTabManagementExperimentTypeChive[] = + "tab-management-experiment-type-chive"; +const char kTabManagementExperimentTypeDill[] = + "tab-management-experiment-type-dill"; #endif // defined(OS_ANDROID) #if defined(OS_WIN) || defined(OS_LINUX) diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h index 03ad823..c3fb63f 100644 --- a/chrome/common/chrome_switches.h +++ b/chrome/common/chrome_switches.h @@ -306,7 +306,11 @@ extern const char kForceShowUpdateMenuItemNewFeaturesSummary[]; extern const char kForceShowUpdateMenuItemCustomSummary[]; extern const char kForceShowUpdateMenuBadge[]; extern const char kMarketUrlForTesting[]; -extern const char kTabManagementExperimentType[]; +extern const char kTabManagementExperimentTypeDisabled[]; +extern const char kTabManagementExperimentTypeAnise[]; +extern const char kTabManagementExperimentTypeBasil[]; +extern const char kTabManagementExperimentTypeChive[]; +extern const char kTabManagementExperimentTypeDill[]; #endif // defined(OS_ANDROID) #if defined(USE_ASH) diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index 4469a7b..c9c910a 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml @@ -71411,6 +71411,7 @@ To add a new entry, add it with any value and run test to compute valid value. <int value="-1497338981" label="disable-accelerated-overflow-scroll"/> <int value="-1490298774" label="enable-captive-portal-bypass-proxy-option"/> <int value="-1482685863" label="enable-request-tablet-site"/> + <int value="-1467332609" label="tab-management-experiment-type-anise"/> <int value="-1460462432" label="disable-media-source"/> <int value="-1440152291" label="disable-gesture-typing"/> <int value="-1433719718" label="enable-webrtc-stun-origin"/> @@ -71565,6 +71566,7 @@ To add a new entry, add it with any value and run test to compute valid value. <int value="-340622848" label="disable-javascript-harmony-shipping"/> <int value="-340255045" label="allow-nacl-socket-api"/> <int value="-328361990" label="enable-experimental-extension-apis"/> + <int value="-322827131" label="tab-management-experiment-type-basil"/> <int value="-320820051" label="enable-zero-copy"/> <int value="-314910380" label="disable-distance-field-text"/> <int value="-311148335" label="v8-pac-mojo-out-of-process"/> @@ -71692,6 +71694,7 @@ To add a new entry, add it with any value and run test to compute valid value. <int value="773919225" label="disable-office-editing-component-extension"/> <int value="779086132" label="enable-data-reduction-proxy-alt"/> <int value="782167080" label="enable-new-qp-input-view"/> + <int value="807734471" label="tab-management-experiment-type-disabled"/> <int value="811374216" label="disable-new-bookmark-apps"/> <int value="820650704" label="disable-ntp-popular-sites"/> <int value="821192723" label="show-fps-counter"/> @@ -71740,6 +71743,7 @@ To add a new entry, add it with any value and run test to compute valid value. <int value="1105439588" label="enable-swipe-selection"/> <int value="1107543566" label="enable-one-copy"/> <int value="1108663108" label="disable-device-discovery-notifications"/> + <int value="1113365156" label="tab-management-experiment-type-chive"/> <int value="1114629582" label="enable-floating-virtual-keyboard"/> <int value="1118109174" label="enable-launcher-search-provider-api"/> <int value="1129888794" label="ash-touch-hud"/> @@ -71874,6 +71878,7 @@ To add a new entry, add it with any value and run test to compute valid value. <int value="1993258379" label="enable-icon-ntp"/> <int value="2000091128" label="enable-touch-hover"/> <int value="2004829262" label="enable-webgl-draft-extensions"/> + <int value="2005614493" label="tab-management-experiment-type-dill"/> <int value="2037756154" label="enable-impl-side-painting"/> <int value="2059322877" label="new-avatar-menu"/> <int value="2071461362" label="disable-credit-card-scan"/> diff --git a/ui/android/java/strings/android_ui_strings.grd b/ui/android/java/strings/android_ui_strings.grd index 1eee849..1ce51bc 100644 --- a/ui/android/java/strings/android_ui_strings.grd +++ b/ui/android/java/strings/android_ui_strings.grd @@ -234,11 +234,6 @@ <message name="IDS_AUTOFILL_KEYBOARD_ACCESSORY_CONTENT_DESCRIPTION" desc="The text announced by the screen reader when the autofill suggestions are shown."> Suggestions available </message> - - <!-- Herb strings --> - <message name="IDS_CACHE_NATIVE_FLAGS_REQUIRES_RESTART" desc="Toast telling the user that flags may not take effect until a restart." translateable="false"> - Cached flags may not take effect until the browser is restarted again. - </message> </messages> </release> </grit> |