Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/omnibox/OmniboxPlaceholderFieldTrial.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/OmniboxPlaceholderFieldTrial.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/OmniboxPlaceholderFieldTrial.java |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..52bc2aaf3f547f72c6c363add5d0fa9cbc2bb3d2 |
| --- /dev/null |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/OmniboxPlaceholderFieldTrial.java |
| @@ -0,0 +1,95 @@ |
| +// Copyright 2017 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +package org.chromium.chrome.browser.omnibox; |
| + |
| +import android.content.res.Resources; |
| + |
| +import org.chromium.base.CommandLine; |
| +import org.chromium.base.ContextUtils; |
| +import org.chromium.base.FieldTrialList; |
| +import org.chromium.chrome.R; |
| +import org.chromium.chrome.browser.ChromeSwitches; |
| +import org.chromium.chrome.browser.preferences.ChromePreferenceManager; |
| + |
| +/** |
| + * Provides Field Trial support for Omnibox Placeholder Experiment. |
| + */ |
| +public class OmniboxPlaceholderFieldTrial { |
| + private static final String FIELD_TRIAL_NAME = "OmniboxPlaceholderExperiment"; |
| + private static final String GROUP_SEARCH_OR_TYPE_URL = "SearchOrTypeUrl"; |
| + private static final String GROUP_SEARCH_OR_TYPE_WEBSITE_NAME = "SearchOrTypeWebsiteName"; |
| + private static final String GROUP_SEARCH_THE_WEB = "SearchTheWeb"; |
| + private static final String GROUP_ENTER_A_SEARCH_OR_WEBSITE = "EnterASearchOrWebsite"; |
| + private static final String GROUP_SEARCH_NEWS = "SearchNews"; |
| + private static final String GROUP_SEARCH_RECIPES = "SearchRecipes"; |
| + private static final String GROUP_SEARCH_WEATHER = "SearchWeather"; |
| + private static final String GROUP_BLANK = "Blank"; |
| + |
| + private static String sCachedHint = null; |
| + |
| + /** Prevent initialization of this class. */ |
| + private OmniboxPlaceholderFieldTrial() {} |
| + |
| + /** |
| + * Caches omnibox placeholder experiment group to shared preferences. |
| + */ |
| + public static void cacheOmniboxPlaceholderGroup() { |
| + String groupName = FieldTrialList.findFullName(FIELD_TRIAL_NAME); |
|
Ted C
2017/05/30 22:14:28
I "think" they are suggesting most experiments to
|
| + |
| + if (CommandLine.isInitialized()) { |
| + CommandLine instance = CommandLine.getInstance(); |
| + if (instance.hasSwitch(ChromeSwitches.OMNIBOX_PLACEHOLDER_EXPERIMENT)) { |
| + groupName = instance.getSwitchValue(ChromeSwitches.OMNIBOX_PLACEHOLDER_EXPERIMENT); |
| + } |
| + } |
| + ChromePreferenceManager.getInstance().setOmniboxPlaceholderGroup(groupName); |
| + } |
| + |
| + /** |
| + * Set ominibox placeholder text to static variable sCachedHint |
| + */ |
| + private static void setOmniboxPlaceholder() { |
|
Ted C
2017/05/30 22:14:28
nit, but I would call this initOmniboxPlaceholder
huayinz
2017/05/31 00:01:39
Done.
|
| + // setUrlBarHint is only called once when hint is not cached to static variable sCachedHint. |
| + // This is to keep consistency on showing same hint to user in one session. |
| + String groupName = ChromePreferenceManager.getInstance().getOmniboxPlaceholderGroup(); |
| + Resources resources = ContextUtils.getApplicationContext().getResources(); |
| + switch (groupName) { |
| + case GROUP_SEARCH_OR_TYPE_URL: |
| + sCachedHint = resources.getString(R.string.search_or_type_url); |
| + break; |
| + case GROUP_SEARCH_OR_TYPE_WEBSITE_NAME: |
| + sCachedHint = resources.getString(R.string.search_or_type_website_name); |
| + break; |
| + case GROUP_SEARCH_THE_WEB: |
| + sCachedHint = resources.getString(R.string.search_the_web); |
| + break; |
| + case GROUP_ENTER_A_SEARCH_OR_WEBSITE: |
| + sCachedHint = resources.getString(R.string.enter_a_search_or_website); |
| + break; |
| + case GROUP_SEARCH_NEWS: |
| + sCachedHint = resources.getString(R.string.search_news); |
| + break; |
| + case GROUP_SEARCH_RECIPES: |
| + sCachedHint = resources.getString(R.string.search_recipes); |
| + break; |
| + case GROUP_SEARCH_WEATHER: |
| + sCachedHint = resources.getString(R.string.search_weather); |
| + break; |
| + case GROUP_BLANK: |
| + sCachedHint = ""; |
| + break; |
| + default: |
| + sCachedHint = resources.getString(R.string.search_or_type_url); |
| + } |
| + } |
| + |
| + /** |
| + * @return String of hint text to show in omnibox url bar. |
| + */ |
| + public static String getOmniboxPlaceholder() { |
| + if (sCachedHint == null) setOmniboxPlaceholder(); |
| + return sCachedHint; |
| + } |
| +} |