Index: chrome/android/java/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchPolicy.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchPolicy.java b/chrome/android/java/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchPolicy.java |
index 10fcbdbeba05fc91a8f2ada10f1ea99be7f38de0..7485710839a0ec7e6c5014d57b73ba90e60cd37c 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchPolicy.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchPolicy.java |
@@ -5,6 +5,7 @@ |
package org.chromium.chrome.browser.contextualsearch; |
import android.content.Context; |
+import android.text.TextUtils; |
import org.chromium.base.VisibleForTesting; |
import org.chromium.chrome.browser.ChromeVersionInfo; |
@@ -15,6 +16,8 @@ import org.chromium.chrome.browser.preferences.PrefServiceBridge; |
import org.chromium.content.browser.ContentViewCore; |
import java.net.URL; |
+import java.util.List; |
+import java.util.Locale; |
import java.util.regex.Pattern; |
import javax.annotation.Nullable; |
@@ -387,6 +390,45 @@ class ContextualSearchPolicy { |
return mPreferenceManager.getContextualSearchTapCount(); |
} |
+ /** |
+ * Determines whether translation is needed between the given languages. |
+ * @param sourceLanguage The source language code; language we're translating from. |
+ * @param targetLanguages A list of target language codes; languages we might translate to. |
+ * @return Whether translation is needed or not. |
+ */ |
+ boolean needsTranslation(String sourceLanguage, List<String> targetLanguages) { |
+ // For now, we just look for a language match. |
+ for (String targetLanguage : targetLanguages) { |
+ if (TextUtils.equals(sourceLanguage, targetLanguage)) { |
+ return false; |
+ } |
+ } |
+ return true; |
+ } |
+ |
+ /** |
+ * Determines the best target language. |
+ */ |
+ String bestTargetLanguage(List<String> targetLanguages) { |
+ // For now, we just return the first language, unless it's English (due to over-usage). |
+ // TODO(donnd): Improve this logic. Determining the right language seems non-trivial. |
+ // E.g. If this language doesn't match the user's server preferences, they might see a page |
+ // in one language and the one box translation in another, which might be confusing. |
+ if (TextUtils.equals(targetLanguages.get(0), Locale.ENGLISH.getLanguage()) |
+ && targetLanguages.size() > 1) { |
+ return targetLanguages.get(1); |
+ } else { |
+ return targetLanguages.get(0); |
+ } |
+ } |
+ |
+ /** |
+ * @return Whether translation should be enabled or not. |
+ */ |
+ boolean isTranslationEnabled() { |
+ return ContextualSearchFieldTrial.isTranslationOneboxEnabled(); |
+ } |
+ |
// -------------------------------------------------------------------------------------------- |
// Private helpers. |
// -------------------------------------------------------------------------------------------- |