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

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchPolicy.java

Issue 1354763003: [Contextual Search] Trigger the translation one-box. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updated comment about test infrastructure needing to be updated when shifting to new API. Created 5 years, 1 month 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 unified diff | Download patch
OLDNEW
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 9
9 import org.chromium.base.VisibleForTesting; 10 import org.chromium.base.VisibleForTesting;
10 import org.chromium.chrome.browser.ChromeVersionInfo; 11 import org.chromium.chrome.browser.ChromeVersionInfo;
11 import org.chromium.chrome.browser.contextualsearch.ContextualSearchSelectionCon troller.SelectionType; 12 import org.chromium.chrome.browser.contextualsearch.ContextualSearchSelectionCon troller.SelectionType;
12 import org.chromium.chrome.browser.preferences.ChromePreferenceManager; 13 import org.chromium.chrome.browser.preferences.ChromePreferenceManager;
13 import org.chromium.chrome.browser.preferences.NetworkPredictionOptions; 14 import org.chromium.chrome.browser.preferences.NetworkPredictionOptions;
14 import org.chromium.chrome.browser.preferences.PrefServiceBridge; 15 import org.chromium.chrome.browser.preferences.PrefServiceBridge;
15 import org.chromium.content.browser.ContentViewCore; 16 import org.chromium.content.browser.ContentViewCore;
16 17
17 import java.net.URL; 18 import java.net.URL;
19 import java.util.List;
20 import java.util.Locale;
18 import java.util.regex.Pattern; 21 import java.util.regex.Pattern;
19 22
20 import javax.annotation.Nullable; 23 import javax.annotation.Nullable;
21 24
22 25
23 /** 26 /**
24 * Handles policy decisions for the {@code ContextualSearchManager}. 27 * Handles policy decisions for the {@code ContextualSearchManager}.
25 */ 28 */
26 class ContextualSearchPolicy { 29 class ContextualSearchPolicy {
27 private static final Pattern CONTAINS_WHITESPACE_PATTERN = Pattern.compile(" \\s"); 30 private static final Pattern CONTAINS_WHITESPACE_PATTERN = Pattern.compile(" \\s");
(...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 } 383 }
381 384
382 /** 385 /**
383 * @return The number of times the user has tapped since the last panel open . 386 * @return The number of times the user has tapped since the last panel open .
384 */ 387 */
385 @VisibleForTesting 388 @VisibleForTesting
386 int getTapCount() { 389 int getTapCount() {
387 return mPreferenceManager.getContextualSearchTapCount(); 390 return mPreferenceManager.getContextualSearchTapCount();
388 } 391 }
389 392
393 /**
394 * Determines whether translation is needed between the given languages.
395 * @param sourceLanguage The source language code; language we're translatin g from.
396 * @param targetLanguages A list of target language codes; languages we migh t translate to.
397 * @return Whether translation is needed or not.
398 */
399 boolean needsTranslation(String sourceLanguage, List<String> targetLanguages ) {
400 // For now, we just look for a language match.
401 for (String targetLanguage : targetLanguages) {
402 if (TextUtils.equals(sourceLanguage, targetLanguage)) {
403 return false;
404 }
405 }
406 return true;
407 }
408
409 /**
410 * Determines the best target language.
411 */
412 String bestTargetLanguage(List<String> targetLanguages) {
413 // For now, we just return the first language, unless it's English (due to over-usage).
414 // TODO(donnd): Improve this logic. Determining the right language seems non-trivial.
415 // E.g. If this language doesn't match the user's server preferences, th ey might see a page
416 // in one language and the one box translation in another, which might b e confusing.
417 if (TextUtils.equals(targetLanguages.get(0), Locale.ENGLISH.getLanguage( ))
418 && targetLanguages.size() > 1) {
419 return targetLanguages.get(1);
420 } else {
421 return targetLanguages.get(0);
422 }
423 }
424
425 /**
426 * @return Whether translation should be enabled or not.
427 */
428 boolean isTranslationEnabled() {
429 return ContextualSearchFieldTrial.isTranslationOneboxEnabled();
430 }
431
390 // ------------------------------------------------------------------------- ------------------- 432 // ------------------------------------------------------------------------- -------------------
391 // Private helpers. 433 // Private helpers.
392 // ------------------------------------------------------------------------- ------------------- 434 // ------------------------------------------------------------------------- -------------------
393 435
394 /** 436 /**
395 * @return Whether a promo is needed because the user is still undecided 437 * @return Whether a promo is needed because the user is still undecided
396 * on enabling or disabling the feature. 438 * on enabling or disabling the feature.
397 */ 439 */
398 private boolean isUserUndecided() { 440 private boolean isUserUndecided() {
399 // TODO(donnd) use dependency injection for the PrefServiceBridge instea d! 441 // TODO(donnd) use dependency injection for the PrefServiceBridge instea d!
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
453 495
454 /** 496 /**
455 * @return The limit of the number of taps to resolve using search term reso lution. 497 * @return The limit of the number of taps to resolve using search term reso lution.
456 */ 498 */
457 private int getTapResolveLimit() { 499 private int getTapResolveLimit() {
458 return isUserUndecided() 500 return isUserUndecided()
459 ? ContextualSearchFieldTrial.getTapResolveLimitForUndecided() 501 ? ContextualSearchFieldTrial.getTapResolveLimitForUndecided()
460 : ContextualSearchFieldTrial.getTapResolveLimitForDecided(); 502 : ContextualSearchFieldTrial.getTapResolveLimitForDecided();
461 } 503 }
462 } 504 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698