| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.chrome.browser.contextualsearch; | 5 package org.chromium.chrome.browser.contextualsearch; |
| 6 | 6 |
| 7 import android.content.Context; | 7 import android.content.Context; |
| 8 import android.text.TextUtils; | 8 import android.text.TextUtils; |
| 9 | 9 |
| 10 import org.chromium.base.CommandLine; | 10 import org.chromium.base.CommandLine; |
| 11 import org.chromium.base.SysUtils; | 11 import org.chromium.base.SysUtils; |
| 12 import org.chromium.base.VisibleForTesting; | 12 import org.chromium.base.VisibleForTesting; |
| 13 import org.chromium.chrome.browser.ChromeSwitches; | 13 import org.chromium.chrome.browser.ChromeSwitches; |
| 14 import org.chromium.chrome.browser.ChromeVersionInfo; | 14 import org.chromium.chrome.browser.ChromeVersionInfo; |
| 15 import org.chromium.components.variations.VariationsAssociatedData; | 15 import org.chromium.components.variations.VariationsAssociatedData; |
| 16 import org.chromium.ui.base.DeviceFormFactor; | 16 import org.chromium.ui.base.DeviceFormFactor; |
| 17 | 17 |
| 18 /** | 18 /** |
| 19 * Provides Field Trial support for the Contextual Search application within Chr
ome for Android. | 19 * Provides Field Trial support for the Contextual Search application within Chr
ome for Android. |
| 20 */ | 20 */ |
| 21 public class ContextualSearchFieldTrial { | 21 public class ContextualSearchFieldTrial { |
| 22 private static final String FIELD_TRIAL_NAME = "ContextualSearch"; | 22 private static final String FIELD_TRIAL_NAME = "ContextualSearch"; |
| 23 private static final String ENABLED_PARAM = "enabled"; | 23 private static final String ENABLED_PARAM = "enabled"; |
| 24 private static final String ENABLED_VALUE = "true"; | 24 private static final String ENABLED_VALUE = "true"; |
| 25 | 25 |
| 26 static final String PROMO_ON_LIMITED_TAPS = "promo_on_limited_taps"; | 26 static final String PROMO_ON_LIMITED_TAPS = "promo_on_limited_taps"; |
| 27 static final String TAP_TRIGGERED_PROMO_LIMIT = "tap_triggered_promo_limit"; | 27 static final String TAP_TRIGGERED_PROMO_LIMIT = "tap_triggered_promo_limit"; |
| 28 static final String TAP_RESOLVE_LIMIT_FOR_DECIDED = "tap_resolve_limit_for_d
ecided"; | |
| 29 static final String TAP_PREFETCH_LIMIT_FOR_DECIDED = "tap_prefetch_limit_for
_decided"; | |
| 30 static final String TAP_RESOLVE_LIMIT_FOR_UNDECIDED = "tap_resolve_limit_for
_undecided"; | |
| 31 static final String TAP_PREFETCH_LIMIT_FOR_UNDECIDED = "tap_prefetch_limit_f
or_undecided"; | |
| 32 | |
| 33 static final String PEEK_PROMO_FORCED = "peek_promo_forced"; | 28 static final String PEEK_PROMO_FORCED = "peek_promo_forced"; |
| 34 static final String PEEK_PROMO_ENABLED = "peek_promo_enabled"; | 29 static final String PEEK_PROMO_ENABLED = "peek_promo_enabled"; |
| 35 static final String PEEK_PROMO_MAX_SHOW_COUNT = "peek_promo_max_show_count"; | 30 static final String PEEK_PROMO_MAX_SHOW_COUNT = "peek_promo_max_show_count"; |
| 36 static final int PEEK_PROMO_DEFAULT_MAX_SHOW_COUNT = 10; | 31 static final int PEEK_PROMO_DEFAULT_MAX_SHOW_COUNT = 10; |
| 37 | 32 |
| 38 static final String DISABLE_EXTRA_SEARCH_BAR_ANIMATIONS = "disable_extra_sea
rch_bar_animations"; | 33 static final String DISABLE_EXTRA_SEARCH_BAR_ANIMATIONS = "disable_extra_sea
rch_bar_animations"; |
| 39 | 34 |
| 40 // Translation. | 35 // Translation. |
| 41 @VisibleForTesting | 36 @VisibleForTesting |
| 42 static final String TRANSLATION_ONEBOX_ENABLED = "translation_onebox_enabled
"; | 37 static final String TRANSLATION_ONEBOX_ENABLED = "translation_onebox_enabled
"; |
| 43 | 38 |
| 44 // Tap handling. | 39 // Tap handling. |
| 45 private static final int UNLIMITED_TAPS = -1; | 40 private static final int UNLIMITED_TAPS = -1; |
| 46 private static final int DEFAULT_TAP_RESOLVE_LIMIT_FOR_DECIDED = UNLIMITED_T
APS; | |
| 47 private static final int DEFAULT_TAP_PREFETCH_LIMIT_FOR_DECIDED = UNLIMITED_
TAPS; | |
| 48 private static final int DEFAULT_TAP_RESOLVE_LIMIT_FOR_UNDECIDED = 100; | |
| 49 private static final int DEFAULT_TAP_PREFETCH_LIMIT_FOR_UNDECIDED = 10; | |
| 50 | 41 |
| 51 // Cached values to avoid repeated and redundant JNI operations. | 42 // Cached values to avoid repeated and redundant JNI operations. |
| 52 private static Boolean sEnabled; | 43 private static Boolean sEnabled; |
| 53 private static Boolean sIsPeekPromoEnabled; | 44 private static Boolean sIsPeekPromoEnabled; |
| 54 private static Integer sPeekPromoMaxCount; | 45 private static Integer sPeekPromoMaxCount; |
| 55 private static Boolean sIsTranslationOneboxEnabled; | 46 private static Boolean sIsTranslationOneboxEnabled; |
| 56 | 47 |
| 57 /** | 48 /** |
| 58 * Don't instantiate. | 49 * Don't instantiate. |
| 59 */ | 50 */ |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 /** | 105 /** |
| 115 * @return The maximum number of times the promo can be triggered by a tap,
or | 106 * @return The maximum number of times the promo can be triggered by a tap,
or |
| 116 * {@code ContextualSearchUma#PROMO_TAPS_REMAINING_INVALID} if no value is p
resent in the finch | 107 * {@code ContextualSearchUma#PROMO_TAPS_REMAINING_INVALID} if no value is p
resent in the finch |
| 117 * configuration. | 108 * configuration. |
| 118 */ | 109 */ |
| 119 static int getPromoTapTriggeredLimit() { | 110 static int getPromoTapTriggeredLimit() { |
| 120 return getIntParamValueOrDefault(TAP_TRIGGERED_PROMO_LIMIT, UNLIMITED_TA
PS); | 111 return getIntParamValueOrDefault(TAP_TRIGGERED_PROMO_LIMIT, UNLIMITED_TA
PS); |
| 121 } | 112 } |
| 122 | 113 |
| 123 /** | 114 /** |
| 124 * @return Whether Search Term Resolution in response to a Tap gesture is li
mited for decided | |
| 125 * users. | |
| 126 */ | |
| 127 static boolean isTapResolveLimitedForDecided() { | |
| 128 return getTapResolveLimitForDecided() != ContextualSearchFieldTrial.UNLI
MITED_TAPS; | |
| 129 } | |
| 130 | |
| 131 /** | |
| 132 * @return Whether prefetch in response to a Tap gesture is limited for deci
ded users. | |
| 133 */ | |
| 134 static boolean isTapPrefetchLimitedForDecided() { | |
| 135 return getTapPrefetchLimitForDecided() != ContextualSearchFieldTrial.UNL
IMITED_TAPS; | |
| 136 } | |
| 137 | |
| 138 /** | |
| 139 * @return Whether Search Term Resolution in response to a Tap gesture is li
mited for undecided | |
| 140 * users. | |
| 141 */ | |
| 142 static boolean isTapResolveLimitedForUndecided() { | |
| 143 return getTapResolveLimitForUndecided() != ContextualSearchFieldTrial.UN
LIMITED_TAPS; | |
| 144 } | |
| 145 | |
| 146 /** | |
| 147 * @return Whether prefetch in response to a Tap gesture is limited for unde
cided users. | |
| 148 */ | |
| 149 static boolean isTapPrefetchLimitedForUndecided() { | |
| 150 return getTapPrefetchLimitForUndecided() != ContextualSearchFieldTrial.U
NLIMITED_TAPS; | |
| 151 } | |
| 152 /** | |
| 153 * @return The limit on the number of taps to resolve for decided users, or
the default if no | |
| 154 * value is present in the Finch configuration. | |
| 155 */ | |
| 156 static int getTapResolveLimitForDecided() { | |
| 157 return getIntParamValueOrDefault(TAP_RESOLVE_LIMIT_FOR_DECIDED, | |
| 158 DEFAULT_TAP_RESOLVE_LIMIT_FOR_DECIDED); | |
| 159 } | |
| 160 | |
| 161 /** | |
| 162 * @return The limit on the number of prefetches to issue for decided users,
or the default | |
| 163 * if no value is present. | |
| 164 */ | |
| 165 static int getTapPrefetchLimitForDecided() { | |
| 166 return getIntParamValueOrDefault(TAP_PREFETCH_LIMIT_FOR_DECIDED, | |
| 167 DEFAULT_TAP_PREFETCH_LIMIT_FOR_DECIDED); | |
| 168 } | |
| 169 | |
| 170 /** | |
| 171 * @return The limit on the number of taps to resolve for undecided users, o
r the default if no | |
| 172 * value is present in the Finch configuration. | |
| 173 */ | |
| 174 static int getTapResolveLimitForUndecided() { | |
| 175 return getIntParamValueOrDefault(TAP_RESOLVE_LIMIT_FOR_UNDECIDED, | |
| 176 DEFAULT_TAP_RESOLVE_LIMIT_FOR_UNDECIDED); | |
| 177 } | |
| 178 | |
| 179 /** | |
| 180 * @return The limit on the number of prefetches to issue for undecided user
s, or the default | |
| 181 * if no value is present. | |
| 182 */ | |
| 183 static int getTapPrefetchLimitForUndecided() { | |
| 184 return getIntParamValueOrDefault(TAP_PREFETCH_LIMIT_FOR_UNDECIDED, | |
| 185 DEFAULT_TAP_PREFETCH_LIMIT_FOR_UNDECIDED); | |
| 186 } | |
| 187 | |
| 188 /** | |
| 189 * @return Whether the Peek Promo is forcibly enabled (used for testing). | 115 * @return Whether the Peek Promo is forcibly enabled (used for testing). |
| 190 */ | 116 */ |
| 191 static boolean isPeekPromoForced() { | 117 static boolean isPeekPromoForced() { |
| 192 return CommandLine.getInstance().hasSwitch(PEEK_PROMO_FORCED); | 118 return CommandLine.getInstance().hasSwitch(PEEK_PROMO_FORCED); |
| 193 } | 119 } |
| 194 | 120 |
| 195 /** | 121 /** |
| 196 * @return Whether the Peek Promo is enabled. | 122 * @return Whether the Peek Promo is enabled. |
| 197 */ | 123 */ |
| 198 static boolean isPeekPromoEnabled() { | 124 static boolean isPeekPromoEnabled() { |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 266 try { | 192 try { |
| 267 return Integer.parseInt(value); | 193 return Integer.parseInt(value); |
| 268 } catch (NumberFormatException e) { | 194 } catch (NumberFormatException e) { |
| 269 return defaultValue; | 195 return defaultValue; |
| 270 } | 196 } |
| 271 } | 197 } |
| 272 | 198 |
| 273 return defaultValue; | 199 return defaultValue; |
| 274 } | 200 } |
| 275 } | 201 } |
| OLD | NEW |