Commit 7e61563e authored by Natalie Chouinard's avatar Natalie Chouinard Committed by Commit Bot

Move methods to TranslateBridge

Move Translate feature-specific methods from PrefServiceBridge to the
dedicated TranslateBridge.

Bug: 1016957
Change-Id: I57a3052258572e854cfd3f9376b5529c0a0e528b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1893829Reviewed-by: default avatarAndrew Grieve <agrieve@chromium.org>
Reviewed-by: default avataranthonyvd <anthonyvd@chromium.org>
Commit-Queue: Natalie Chouinard <chouinard@chromium.org>
Cr-Commit-Position: refs/heads/master@{#713072}
parent 8de6277b
......@@ -35,6 +35,7 @@ import org.chromium.chrome.browser.preferences.privacy.BrowsingDataBridge;
import org.chromium.chrome.browser.profiles.ProfileManagerUtils;
import org.chromium.chrome.browser.share.ShareHelper;
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.translate.TranslateBridge;
import org.chromium.ui.base.ResourceBundle;
import java.util.Locale;
......@@ -222,7 +223,7 @@ public class ChromeActivitySessionTracker {
SharedPreferences.Editor editor = prefs.edit();
editor.putString(PREF_LOCALE, newLocale);
editor.apply();
PrefServiceBridge.getInstance().resetAcceptLanguages(newLocale);
TranslateBridge.resetAcceptLanguages(newLocale);
// We consider writing the initial value to prefs as _not_ changing the locale.
return previousLocale != null;
}
......
......@@ -22,8 +22,8 @@ import org.chromium.base.metrics.RecordHistogram;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.preferences.languages.LanguageItem;
import org.chromium.chrome.browser.translate.TranslateBridge;
import org.chromium.components.language.AndroidLanguageMetricsBridge;
import org.chromium.components.language.GeoLanguageProviderBridge;
import org.chromium.ui.modaldialog.DialogDismissalCause;
......@@ -243,12 +243,12 @@ public class LanguageAskPrompt implements ModalDialogProperties.Controller {
*/
public static boolean maybeShowLanguageAskPrompt(ChromeActivity activity) {
if (!ChromeFeatureList.isEnabled(ChromeFeatureList.EXPLICIT_LANGUAGE_ASK)) return false;
if (PrefServiceBridge.getInstance().getExplicitLanguageAskPromptShown()) return false;
if (TranslateBridge.getExplicitLanguageAskPromptShown()) return false;
LanguageAskPrompt prompt = new LanguageAskPrompt();
prompt.show(activity);
PrefServiceBridge.getInstance().setExplicitLanguageAskPromptShown(true);
TranslateBridge.setExplicitLanguageAskPromptShown(true);
return true;
}
......@@ -269,7 +269,7 @@ public class LanguageAskPrompt implements ModalDialogProperties.Controller {
languagesToAdd.removeAll(mInitialLanguages);
for (String language : languagesToAdd) {
PrefServiceBridge.getInstance().updateUserAcceptLanguages(language, true);
TranslateBridge.updateUserAcceptLanguages(language, true);
AndroidLanguageMetricsBridge.reportExplicitLanguageAskStateChanged(language, true);
}
......@@ -277,7 +277,7 @@ public class LanguageAskPrompt implements ModalDialogProperties.Controller {
languagesToRemove.removeAll(mLanguagesUpdate);
for (String language : languagesToRemove) {
PrefServiceBridge.getInstance().updateUserAcceptLanguages(language, false);
TranslateBridge.updateUserAcceptLanguages(language, false);
AndroidLanguageMetricsBridge.reportExplicitLanguageAskStateChanged(language, false);
}
}
......@@ -291,8 +291,7 @@ public class LanguageAskPrompt implements ModalDialogProperties.Controller {
recordPromptEvent(PROMPT_EVENT_SHOWN);
List<String> userAcceptLanguagesList =
PrefServiceBridge.getInstance().getUserLanguageCodes();
List<String> userAcceptLanguagesList = TranslateBridge.getUserLanguageCodes();
mInitialLanguages = new HashSet<String>();
mInitialLanguages.addAll(userAcceptLanguagesList);
mLanguagesUpdate = new HashSet<String>(mInitialLanguages);
......@@ -311,7 +310,7 @@ public class LanguageAskPrompt implements ModalDialogProperties.Controller {
ImageView bottomShadow = customView.findViewById(R.id.bottom_shadow);
mListScrollListener = new ListScrollListener(list, topShadow, bottomShadow);
List<LanguageItem> languages = PrefServiceBridge.getInstance().getChromeLanguageList();
List<LanguageItem> languages = TranslateBridge.getChromeLanguageList();
LinkedHashSet<String> currentGeoLanguages =
GeoLanguageProviderBridge.getCurrentGeoLanguages();
......
......@@ -12,7 +12,6 @@ import org.chromium.base.VisibleForTesting;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.chrome.browser.ContentSettingsType;
import org.chromium.chrome.browser.preferences.languages.LanguageItem;
import org.chromium.chrome.browser.preferences.website.ContentSettingException;
import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory;
......@@ -196,17 +195,6 @@ public class PrefServiceBridge {
list.add(exception);
}
@CalledByNative
private static void addNewLanguageItemToList(List<LanguageItem> list, String code,
String displayName, String nativeDisplayName, boolean supportTranslate) {
list.add(new LanguageItem(code, displayName, nativeDisplayName, supportTranslate));
}
@CalledByNative
private static void copyStringArrayToList(List<String> list, String[] source) {
list.addAll(Arrays.asList(source));
}
/**
* Return the list of android permission strings for a given {@link ContentSettingsType}. If
* there is no permissions associated with the content setting, then an empty array is returned.
......@@ -316,13 +304,6 @@ public class PrefServiceBridge {
return isContentSettingManaged(ContentSettingsType.AUTOMATIC_DOWNLOADS);
}
/**
* Sets the preference that controls translate
*/
public void setTranslateEnabled(boolean enabled) {
PrefServiceBridgeJni.get().setTranslateEnabled(enabled);
}
/**
* Sets the preference that signals when the user has accepted the EULA.
*/
......@@ -431,20 +412,6 @@ public class PrefServiceBridge {
return PrefServiceBridgeJni.get().getResolveNavigationErrorManaged();
}
/**
* @return true if translate is enabled, false otherwise.
*/
public boolean isTranslateEnabled() {
return PrefServiceBridgeJni.get().getTranslateEnabled();
}
/**
* @return Whether translate is configured by policy
*/
public boolean isTranslateManaged() {
return PrefServiceBridgeJni.get().getTranslateManaged();
}
/**
* Sets whether the web service to resolve navigation error should be enabled.
*/
......@@ -644,84 +611,6 @@ public class PrefServiceBridge {
return PrefServiceBridgeJni.get().getAboutVersionStrings();
}
/**
* Reset accept-languages to its default value.
*
* @param defaultLocale A fall-back value such as en_US, de_DE, zh_CN, etc.
*/
public void resetAcceptLanguages(String defaultLocale) {
PrefServiceBridgeJni.get().resetAcceptLanguages(defaultLocale);
}
/**
* @return A sorted list of LanguageItems representing the Chrome accept languages with details.
* Languages that are not supported on Android have been filtered out.
*/
public List<LanguageItem> getChromeLanguageList() {
List<LanguageItem> list = new ArrayList<>();
PrefServiceBridgeJni.get().getChromeAcceptLanguages(list);
return list;
}
/**
* @return A sorted list of accept language codes for the current user.
* Note that for the signed-in user, the list might contain some language codes from
* other platforms but not supported on Android.
*/
public List<String> getUserLanguageCodes() {
List<String> list = new ArrayList<>();
PrefServiceBridgeJni.get().getUserAcceptLanguages(list);
return list;
}
/**
* Update accept language for the current user.
*
* @param languageCode A valid language code to update.
* @param add Whether this is an "add" operation or "delete" operation.
*/
public void updateUserAcceptLanguages(String languageCode, boolean add) {
PrefServiceBridgeJni.get().updateUserAcceptLanguages(languageCode, add);
}
/**
* Move a language to the given postion of the user's accept language.
*
* @param languageCode A valid language code to set.
* @param offset The offset from the original position of the language.
*/
public void moveAcceptLanguage(String languageCode, int offset) {
PrefServiceBridgeJni.get().moveAcceptLanguage(languageCode, offset);
}
/**
* Given an array of language codes, sets the order of the user's accepted languages to match.
*
* @param codes The new order for the user's accepted languages.
*/
public void setLanguageOrder(String[] codes) {
PrefServiceBridgeJni.get().setLanguageOrder(codes);
}
/**
* @param languageCode A valid language code to check.
* @return Whether the given language is blocked by the user.
*/
public boolean isBlockedLanguage(String languageCode) {
return PrefServiceBridgeJni.get().isBlockedLanguage(languageCode);
}
/**
* Sets the blocked state of a given language.
*
* @param languageCode A valid language code to change.
* @param blocked Whether to set language blocked.
*/
public void setLanguageBlockedState(String languageCode, boolean blocked) {
PrefServiceBridgeJni.get().setLanguageBlockedState(languageCode, blocked);
}
/**
* @return Whether usage and crash reporting pref is enabled.
*/
......@@ -757,21 +646,6 @@ public class PrefServiceBridge {
PrefServiceBridgeJni.get().setDownloadAndSaveFileDefaultDirectory(directory);
}
/**
* @return Whether the explicit language prompt was shown at least once.
*/
public boolean getExplicitLanguageAskPromptShown() {
return PrefServiceBridgeJni.get().getExplicitLanguageAskPromptShown();
}
/**
* @param shown The value to set the underlying pref to: whether the prompt
* was shown to the user at least once.
*/
public void setExplicitLanguageAskPromptShown(boolean shown) {
PrefServiceBridgeJni.get().setExplicitLanguageAskPromptShown(shown);
}
/**
* @param enabled The value to set whether or not ForceWebContentsDarkMode is enabled.
*/
......@@ -825,15 +699,12 @@ public class PrefServiceBridge {
void setMicEnabled(boolean enabled);
boolean getMicUserModifiable();
boolean getMicManagedByCustodian();
boolean getTranslateEnabled();
boolean getTranslateManaged();
boolean getResolveNavigationErrorEnabled();
boolean getResolveNavigationErrorManaged();
boolean getIncognitoModeEnabled();
boolean getIncognitoModeManaged();
boolean getSensorsEnabled();
boolean getSoundEnabled();
void setTranslateEnabled(boolean enabled);
void setAutomaticDownloadsEnabled(boolean enabled);
void setAutoplayEnabled(boolean enabled);
void setAllowCookiesEnabled(boolean enabled);
......@@ -862,22 +733,12 @@ public class PrefServiceBridge {
void setNetworkPredictionEnabled(boolean enabled);
void setResolveNavigationErrorEnabled(boolean enabled);
void setEulaAccepted();
void resetAcceptLanguages(String defaultLocale);
String getSyncLastAccountName();
boolean isMetricsReportingEnabled();
void setMetricsReportingEnabled(boolean enabled);
boolean isMetricsReportingManaged();
void getChromeAcceptLanguages(List<LanguageItem> list);
void getUserAcceptLanguages(List<String> list);
void updateUserAcceptLanguages(String language, boolean add);
void moveAcceptLanguage(String language, int offset);
void setLanguageOrder(String[] codes);
boolean isBlockedLanguage(String language);
void setLanguageBlockedState(String language, boolean blocked);
String getDownloadDefaultDirectory();
void setDownloadAndSaveFileDefaultDirectory(String directory);
boolean getExplicitLanguageAskPromptShown();
void setExplicitLanguageAskPromptShown(boolean shown);
void setForceWebContentsDarkModeEnabled(boolean enabled);
}
}
......@@ -15,7 +15,9 @@ import android.util.AttributeSet;
import android.widget.TextView;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.preferences.Pref;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.translate.TranslateBridge;
import org.chromium.chrome.browser.ui.widget.ListMenuButton;
import org.chromium.chrome.browser.ui.widget.ListMenuButton.Item;
import org.chromium.chrome.browser.ui.widget.TintedDrawable;
......@@ -46,10 +48,9 @@ public class LanguageListPreference extends Preference {
ArrayList<Item> menuItems = new ArrayList<>();
// Show "Offer to translate" option if "Chrome Translate" is enabled.
if (PrefServiceBridge.getInstance().isTranslateEnabled()) {
if (PrefServiceBridge.getInstance().getBoolean(Pref.OFFER_TRANSLATE_ENABLED)) {
// Set this row checked if the language is unblocked.
int endIconResId =
PrefServiceBridge.getInstance().isBlockedLanguage(info.getCode())
int endIconResId = TranslateBridge.isBlockedLanguage(info.getCode())
? 0
: R.drawable.ic_check_googblue_24dp;
// Add checked icon at the end.
......@@ -85,8 +86,7 @@ public class LanguageListPreference extends Preference {
if (item.getTextId() == R.string.languages_item_option_offer_to_translate) {
// Toggle current blocked state of this language.
boolean state = (item.getEndIconId() == 0);
PrefServiceBridge.getInstance().setLanguageBlockedState(
info.getCode(), !state);
TranslateBridge.setLanguageBlockedState(info.getCode(), !state);
LanguagesManager.recordAction(state
? LanguagesManager.LanguageSettingsActionType
.ENABLE_TRANSLATE_FOR_SINGLE_LANGUAGE
......
......@@ -7,7 +7,7 @@ package org.chromium.chrome.browser.preferences.languages;
import androidx.annotation.IntDef;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.translate.TranslateBridge;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
......@@ -69,17 +69,14 @@ class LanguagesManager {
private static LanguagesManager sManager;
private final PrefServiceBridge mPrefServiceBridge;
private final Map<String, LanguageItem> mLanguagesMap;
private AcceptLanguageObserver mObserver;
private LanguagesManager() {
mPrefServiceBridge = PrefServiceBridge.getInstance();
// Get all language data from native.
mLanguagesMap = new LinkedHashMap<>();
for (LanguageItem item : mPrefServiceBridge.getChromeLanguageList()) {
for (LanguageItem item : TranslateBridge.getChromeLanguageList()) {
mLanguagesMap.put(item.getCode(), item);
}
}
......@@ -100,7 +97,7 @@ class LanguagesManager {
*/
public List<LanguageItem> getUserAcceptLanguageItems() {
// Always read the latest user accept language code list from native.
List<String> codes = mPrefServiceBridge.getUserLanguageCodes();
List<String> codes = TranslateBridge.getUserLanguageCodes();
List<LanguageItem> results = new ArrayList<>();
// Keep the same order as accept language codes list.
......@@ -116,7 +113,7 @@ class LanguagesManager {
*/
public List<LanguageItem> getLanguageItemsExcludingUserAccept() {
// Always read the latest user accept language code list from native.
List<String> codes = mPrefServiceBridge.getUserLanguageCodes();
List<String> codes = TranslateBridge.getUserLanguageCodes();
List<LanguageItem> results = new ArrayList<>();
// Keep the same order as mLanguagesMap.
......@@ -131,7 +128,7 @@ class LanguagesManager {
* @param code The language code to remove.
*/
public void addToAcceptLanguages(String code) {
mPrefServiceBridge.updateUserAcceptLanguages(code, true /* is_add */);
TranslateBridge.updateUserAcceptLanguages(code, true /* is_add */);
notifyAcceptLanguageObserver();
}
......@@ -140,7 +137,7 @@ class LanguagesManager {
* @param code The language code to remove.
*/
public void removeFromAcceptLanguages(String code) {
mPrefServiceBridge.updateUserAcceptLanguages(code, false /* is_add */);
TranslateBridge.updateUserAcceptLanguages(code, false /* is_add */);
notifyAcceptLanguageObserver();
}
......@@ -154,7 +151,7 @@ class LanguagesManager {
public void moveLanguagePosition(String code, int offset, boolean reload) {
if (offset == 0) return;
PrefServiceBridge.getInstance().moveAcceptLanguage(code, offset);
TranslateBridge.moveAcceptLanguage(code, offset);
recordAction(LanguageSettingsActionType.LANGUAGE_LIST_REORDERED);
if (reload) notifyAcceptLanguageObserver();
}
......@@ -166,7 +163,7 @@ class LanguagesManager {
* @param reload True iff the language list should be reloaded.
*/
public void setOrder(String[] codes, boolean reload) {
PrefServiceBridge.getInstance().setLanguageOrder(codes);
TranslateBridge.setLanguageOrder(codes);
recordAction(LanguageSettingsActionType.LANGUAGE_LIST_REORDERED);
if (reload) notifyAcceptLanguageObserver();
}
......
......@@ -11,6 +11,7 @@ import android.support.v7.preference.PreferenceFragmentCompat;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.preferences.ChromeSwitchPreference;
import org.chromium.chrome.browser.preferences.Pref;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.preferences.PreferenceUtils;
import org.chromium.chrome.browser.preferences.PreferencesLauncher;
......@@ -38,14 +39,15 @@ public class LanguagesPreferences
ChromeSwitchPreference translateSwitch =
(ChromeSwitchPreference) findPreference(TRANSLATE_SWITCH_KEY);
boolean isTranslateEnabled = PrefServiceBridge.getInstance().isTranslateEnabled();
boolean isTranslateEnabled =
PrefServiceBridge.getInstance().getBoolean(Pref.OFFER_TRANSLATE_ENABLED);
translateSwitch.setChecked(isTranslateEnabled);
translateSwitch.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
boolean enabled = (boolean) newValue;
PrefServiceBridge.getInstance().setTranslateEnabled(enabled);
PrefServiceBridge.getInstance().setBoolean(Pref.OFFER_TRANSLATE_ENABLED, enabled);
LanguagesManager.recordAction(enabled ? LanguagesManager.LanguageSettingsActionType
.ENABLE_TRANSLATE_GLOBALLY
: LanguagesManager.LanguageSettingsActionType
......@@ -53,8 +55,9 @@ public class LanguagesPreferences
return true;
}
});
translateSwitch.setManagedPreferenceDelegate(
preference -> PrefServiceBridge.getInstance().isTranslateManaged());
translateSwitch.setManagedPreferenceDelegate(preference
-> PrefServiceBridge.getInstance().isManagedPreference(
Pref.OFFER_TRANSLATE_ENABLED));
LanguagesManager.recordImpression(LanguagesManager.LanguageSettingsPageType.PAGE_MAIN);
}
......
......@@ -6,10 +6,14 @@ package org.chromium.chrome.browser.translate;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.chrome.browser.preferences.languages.LanguageItem;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.content_public.browser.WebContents;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.List;
/**
* Bridge class that lets Android code access native code to execute translate on a tab.
......@@ -79,6 +83,109 @@ public class TranslateBridge {
languages.add(languageCode);
}
@CalledByNative
private static void copyStringArrayToList(List<String> list, String[] source) {
list.addAll(Arrays.asList(source));
}
@CalledByNative
private static void addNewLanguageItemToList(List<LanguageItem> list, String code,
String displayName, String nativeDisplayName, boolean supportTranslate) {
list.add(new LanguageItem(code, displayName, nativeDisplayName, supportTranslate));
}
/**
* Reset accept-languages to its default value.
*
* @param defaultLocale A fall-back value such as en_US, de_DE, zh_CN, etc.
*/
public static void resetAcceptLanguages(String defaultLocale) {
TranslateBridgeJni.get().resetAcceptLanguages(defaultLocale);
}
/**
* @return A sorted list of LanguageItems representing the Chrome accept languages with details.
* Languages that are not supported on Android have been filtered out.
*/
public static List<LanguageItem> getChromeLanguageList() {
List<LanguageItem> list = new ArrayList<>();
TranslateBridgeJni.get().getChromeAcceptLanguages(list);
return list;
}
/**
* @return A sorted list of accept language codes for the current user.
* Note that for the signed-in user, the list might contain some language codes from
* other platforms but not supported on Android.
*/
public static List<String> getUserLanguageCodes() {
List<String> list = new ArrayList<>();
TranslateBridgeJni.get().getUserAcceptLanguages(list);
return list;
}
/**
* Update accept language for the current user.
*
* @param languageCode A valid language code to update.
* @param add Whether this is an "add" operation or "delete" operation.
*/
public static void updateUserAcceptLanguages(String languageCode, boolean add) {
TranslateBridgeJni.get().updateUserAcceptLanguages(languageCode, add);
}
/**
* Move a language to the given position of the user's accept language.
*
* @param languageCode A valid language code to set.
* @param offset The offset from the original position of the language.
*/
public static void moveAcceptLanguage(String languageCode, int offset) {
TranslateBridgeJni.get().moveAcceptLanguage(languageCode, offset);
}
/**
* Given an array of language codes, sets the order of the user's accepted languages to match.
*
* @param codes The new order for the user's accepted languages.
*/
public static void setLanguageOrder(String[] codes) {
TranslateBridgeJni.get().setLanguageOrder(codes);
}
/**
* @param languageCode A valid language code to check.
* @return Whether the given language is blocked by the user.
*/
public static boolean isBlockedLanguage2(String languageCode) {
return TranslateBridgeJni.get().isBlockedLanguage2(languageCode);
}
/**
* Sets the blocked state of a given language.
*
* @param languageCode A valid language code to change.
* @param blocked Whether to set language blocked.
*/
public static void setLanguageBlockedState(String languageCode, boolean blocked) {
TranslateBridgeJni.get().setLanguageBlockedState(languageCode, blocked);
}
/**
* @return Whether the explicit language prompt was shown at least once.
*/
public static boolean getExplicitLanguageAskPromptShown() {
return TranslateBridgeJni.get().getExplicitLanguageAskPromptShown();
}
/**
* @param shown The value to set the underlying pref to: whether the prompt
* was shown to the user at least once.
*/
public static void setExplicitLanguageAskPromptShown(boolean shown) {
TranslateBridgeJni.get().setExplicitLanguageAskPromptShown(shown);
}
@NativeMethods
interface Natives {
void manualTranslateWhenReady(WebContents webContents);
......@@ -88,5 +195,15 @@ public class TranslateBridge {
String getTargetLanguage();
boolean isBlockedLanguage(String language);
void getModelLanguages(LinkedHashSet<String> set);
void resetAcceptLanguages(String defaultLocale);
void getChromeAcceptLanguages(List<LanguageItem> list);
void getUserAcceptLanguages(List<String> list);
void updateUserAcceptLanguages(String language, boolean add);
void moveAcceptLanguage(String language, int offset);
void setLanguageOrder(String[] codes);
boolean isBlockedLanguage2(String language);
void setLanguageBlockedState(String language, boolean blocked);
boolean getExplicitLanguageAskPromptShown();
void setExplicitLanguageAskPromptShown(boolean shown);
}
}
......@@ -2879,6 +2879,7 @@ jumbo_static_library("browser") {
"sync/profile_sync_service_android.cc",
"sync/profile_sync_service_android.h",
"translate/android/translate_bridge.cc",
"translate/android/translate_bridge.h",
"updates/update_notification_client.cc",
"updates/update_notification_client.h",
"updates/update_notification_config.cc",
......
......@@ -12,14 +12,6 @@
class PrefServiceBridge {
public:
// Use |locale| to create a language-region pair and language code to prepend
// to the default accept languages. For Malay, we'll end up creating
// "ms-MY,ms,en-US,en", and for Swiss-German, we will have
// "de-CH,de-DE,de,en-US,en".
static void PrependToAcceptLanguagesIfNecessary(
const std::string& locale,
std::string* accept_languages);
// Populate the list of corresponding Android permissions associated with the
// ContentSettingsType specified.
static void GetAndroidPermissionsForContentSetting(
......
......@@ -21,6 +21,7 @@
#include "components/password_manager/core/common/password_manager_pref_names.h"
#include "components/payments/core/payment_prefs.h"
#include "components/safe_browsing/common/safe_browsing_prefs.h"
#include "components/translate/core/browser/translate_pref_names.h"
// A preference exposed to Java.
// A Java counterpart will be generated for this enum.
......@@ -56,6 +57,7 @@ enum Pref {
BLOCK_THIRD_PARTY_COOKIES,
ENABLE_DO_NOT_TRACK,
PRINTING_ENABLED,
OFFER_TRANSLATE_ENABLED,
// PREF_NUM_PREFS must be the last entry.
PREF_NUM_PREFS
};
......@@ -100,7 +102,7 @@ const char* const kPrefsExposedToJava[] = {
prefs::kBlockThirdPartyCookies,
prefs::kEnableDoNotTrack,
prefs::kPrintingEnabled,
prefs::kOfferTranslateEnabled,
};
#endif // CHROME_BROWSER_ANDROID_PREFERENCES_PREFS_H_
......@@ -92,6 +92,8 @@ TEST_F(PrefsTest, TestIndex) {
GetPrefName(BLOCK_THIRD_PARTY_COOKIES));
EXPECT_EQ(prefs::kEnableDoNotTrack, GetPrefName(ENABLE_DO_NOT_TRACK));
EXPECT_EQ(prefs::kPrintingEnabled, GetPrefName(PRINTING_ENABLED));
EXPECT_EQ(prefs::kOfferTranslateEnabled,
GetPrefName(OFFER_TRANSLATE_ENABLED));
// If this check fails, a pref is missing a test case above.
EXPECT_EQ(Pref::PREF_NUM_PREFS, pref_count_);
......
// Copyright 2019 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.
#ifndef CHROME_BROWSER_TRANSLATE_ANDROID_TRANSLATE_BRIDGE_H_
#define CHROME_BROWSER_TRANSLATE_ANDROID_TRANSLATE_BRIDGE_H_
#include <string>
class TranslateBridge {
public:
// Use |locale| to create a language-region pair and language code to prepend
// to the default accept languages. For Malay, we'll end up creating
// "ms-MY,ms,en-US,en", and for Swiss-German, we will have
// "de-CH,de-DE,de,en-US,en".
static void PrependToAcceptLanguagesIfNecessary(
const std::string& locale,
std::string* accept_languages);
};
#endif // CHROME_BROWSER_TRANSLATE_ANDROID_TRANSLATE_BRIDGE_H_
......@@ -2,25 +2,24 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/android/preferences/pref_service_bridge.h"
#include "chrome/browser/translate/android/translate_bridge.h"
#include <string>
#include "testing/gtest/include/gtest/gtest.h"
// A test class for PrefServiceBridge class.
class PrefServiceBridgeTest : public testing::Test {
// A test class for TranslateBridge class.
class TranslateBridgeTest : public testing::Test {
public:
std::string GetAcceptLanguages(std::string locale,
std::string accept_languages) {
PrefServiceBridge::PrependToAcceptLanguagesIfNecessary(locale,
&accept_languages);
TranslateBridge::PrependToAcceptLanguagesIfNecessary(locale,
&accept_languages);
return accept_languages;
}
};
TEST_F(PrefServiceBridgeTest, PrependToAcceptLanguagesAsNecessary) {
TEST_F(TranslateBridgeTest, PrependToAcceptLanguagesAsNecessary) {
EXPECT_EQ("ms-MY,ms,en-US,en", GetAcceptLanguages("ms-MY", "en-US,en"));
EXPECT_EQ("de-CH,de,zh-TW,zh,en-US,en",
GetAcceptLanguages("de-CH,zh-TW", "en-US,en"));
......@@ -49,8 +48,7 @@ TEST_F(PrefServiceBridgeTest, PrependToAcceptLanguagesAsNecessary) {
EXPECT_EQ("mas,en-US,en", GetAcceptLanguages("mas", "en-US,en"));
}
TEST_F(PrefServiceBridgeTest,
ShouldNotPrependToAcceptLanguagesWhenNotNecessary) {
TEST_F(TranslateBridgeTest, ShouldNotPrependToAcceptLanguagesWhenNotNecessary) {
// This logic should not affect cases where original accept language already
// reflects the language code in the locale.
EXPECT_EQ("mas,en-US,en", GetAcceptLanguages("mas", "en-US,en"));
......
......@@ -2897,7 +2897,6 @@ test("unit_tests") {
"../browser/android/oom_intervention/oom_intervention_decider_unittest.cc",
"../browser/android/password_ui_view_android_unittest.cc",
"../browser/android/password_update_delegate_unittest.cc",
"../browser/android/preferences/pref_service_bridge_unittest.cc",
"../browser/android/preferences/prefs_unittest.cc",
"../browser/android/shortcut_info_unittest.cc",
"../browser/android/signin/signin_manager_android_unittest.cc",
......@@ -3278,6 +3277,7 @@ test("unit_tests") {
"../browser/tracing/background_tracing_field_trial_unittest.cc",
"../browser/tracing/background_tracing_metrics_provider_unittest.cc",
"../browser/tracing/trace_event_system_stats_monitor_unittest.cc",
"../browser/translate/android/translate_bridge_unittest.cc",
"../browser/translate/translate_fake_page.cc",
"../browser/translate/translate_service_unittest.cc",
"../browser/ui/android/tab_model/tab_model_list_unittest.cc",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment