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..a55f0c44fef9913a5d92f097b99ab112338f4c92 |
| --- /dev/null |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/OmniboxPlaceholderFieldTrial.java |
| @@ -0,0 +1,86 @@ |
| +// 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.ContextUtils; |
| +import org.chromium.base.FieldTrialList; |
| +import org.chromium.chrome.R; |
| +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; |
|
Ted C
2017/05/31 18:12:15
null is the default, so need for this (and it actu
|
| + |
| + /** 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); |
| + ChromePreferenceManager.getInstance().setOmniboxPlaceholderGroup(groupName); |
| + } |
| + |
| + /** |
| + * Initialize ominibox placeholder text to static variable sCachedHint |
| + */ |
| + private static void initOmniboxPlaceholder() { |
| + // 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) initOmniboxPlaceholder(); |
| + return sCachedHint; |
| + } |
| +} |