summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordfalcantara <dfalcantara@chromium.org>2016-02-24 17:23:27 -0800
committerCommit bot <commit-bot@chromium.org>2016-02-25 01:24:28 +0000
commitb584cb20c80e31ab5ac85a9269e92efaa2cfbcf7 (patch)
treece792376f920f26330d99992edf351371336881d
parent7bf86e45b5f758e3220ea3e57745c1549f392ef1 (diff)
downloadchromium_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}
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java10
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java19
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java4
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java9
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/document/ChromeLauncherActivity.java5
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceManager.java57
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarPhone.java3
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java92
-rw-r--r--chrome/browser/about_flags.cc12
-rw-r--r--chrome/common/chrome_switches.cc11
-rw-r--r--chrome/common/chrome_switches.h6
-rw-r--r--tools/metrics/histograms/histograms.xml5
-rw-r--r--ui/android/java/strings/android_ui_strings.grd5
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>