Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4257)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/omnibox/UrlBarFieldTrial.java

Issue 2903293002: [Android] Omnibox Placeholder Experiment (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/omnibox/UrlBarFieldTrial.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/UrlBarFieldTrial.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/UrlBarFieldTrial.java
new file mode 100644
index 0000000000000000000000000000000000000000..f0aed4c514737a5d2f420514eaea6f65fe41ccd9
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/UrlBarFieldTrial.java
@@ -0,0 +1,98 @@
+// 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 Clank Omnibox Placeholder Experiment
mdjones 2017/05/26 16:14:34 nit: punctuation.
huayinz 2017/05/26 17:21:36 Done.
+ */
+
mdjones 2017/05/26 16:14:34 nit: remove extra new-line.
huayinz 2017/05/26 17:21:36 Done.
+public class UrlBarFieldTrial {
+ private static final String FIELD_TRIAL_NAME = "ClankOmniboxPlaceholderExperiment";
+ 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 initiate
+ private UrlBarFieldTrial() {}
mdjones 2017/05/26 16:14:34 nit: /** Prevent initialization of this class. */
huayinz 2017/05/26 17:21:36 Done.
+
+ /**
+ * Caches hint text shown in omnibox url bar to shared preferences.
+ */
+ public static void cacheUrlBarHint() {
mdjones 2017/05/26 16:14:34 We should name everything consistently; UrlBar ->
huayinz 2017/05/26 17:21:36 Done.
+ String groupName = FieldTrialList.findFullName(FIELD_TRIAL_NAME);
+ String hint;
+
+ CommandLine instance = CommandLine.getInstance();
mdjones 2017/05/26 16:14:34 It might be worth checking CommandLine.isInitializ
huayinz 2017/05/26 17:21:36 Done.
+ if (instance.hasSwitch(ChromeSwitches.OMNIBOX_PLACEHOLDER_EXPERIMENT_SWITCH)) {
+ groupName =
+ instance.getSwitchValue(ChromeSwitches.OMNIBOX_PLACEHOLDER_EXPERIMENT_SWITCH);
+ }
+
+ Resources resources = ContextUtils.getApplicationContext().getResources();
+ switch (groupName) {
+ case GROUP_SEARCH_OR_TYPE_URL:
+ hint = resources.getString(R.string.search_or_type_url);
+ break;
+ case GROUP_SEARCH_OR_TYPE_WEBSITE_NAME:
+ hint = resources.getString(R.string.search_or_type_website_name);
+ break;
+ case GROUP_SEARCH_THE_WEB:
+ hint = resources.getString(R.string.search_the_web);
+ break;
+ case GROUP_ENTER_A_SEARCH_OR_WEBSITE:
+ hint = resources.getString(R.string.enter_a_search_or_website);
+ break;
+ case GROUP_SEARCH_NEWS:
+ hint = resources.getString(R.string.search_news);
+ break;
+ case GROUP_SEARCH_RECIPES:
+ hint = resources.getString(R.string.search_recipes);
+ break;
+ case GROUP_SEARCH_WEATHER:
+ hint = resources.getString(R.string.search_weather);
+ break;
+ case GROUP_BLANK:
+ hint = "";
+ break;
+ default:
+ hint = resources.getString(R.string.search_or_type_url);
+ }
+ ChromePreferenceManager.getInstance().setUrlBarHint(hint);
+ }
+
+ private static void setUrlBarHint() {
mdjones 2017/05/26 16:14:34 nit: javadoc
mdjones 2017/05/26 16:14:34 Based on the name of this function, it's unclear t
huayinz 2017/05/26 17:21:36 The hint text itself is cached in both shared pref
huayinz 2017/05/26 17:21:36 Done.
mdjones 2017/05/26 22:08:51 In most cases it's best practice to cache the flag
huayinz 2017/05/30 17:16:47 Done.
+ // setUrlBarHint is only called once when hint is not cached to static variable.
+ // This is to keep consistency on showing same hint to user in one session.
+ sCachedHint = ChromePreferenceManager.getInstance().getUrlBarHint();
+ if (sCachedHint == null) {
+ Resources resources = ContextUtils.getApplicationContext().getResources();
+ sCachedHint = resources.getString(R.string.search_or_type_url);
+ }
+ }
+
+ /**
+ * @return String of hint text to show in omnibox url bar.
+ */
+ public static String getUrlBarHint() {
+ if (sCachedHint == null) setUrlBarHint();
+ return sCachedHint;
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698